diff --git a/tool/showwal.c b/tool/showwal.c index 7e6c0e17cd..672065d66a 100644 --- a/tool/showwal.c +++ b/tool/showwal.c @@ -181,21 +181,21 @@ static void print_decode_line( int i, j; int val = aData[ofst]; char zBuf[100]; - sprintf(zBuf, " %03x: %02x", ofst, aData[ofst]); + snprintf(zBuf, sizeof(zBuf), " %03x: %02x", ofst, aData[ofst]); i = (int)strlen(zBuf); for(j=1; j<4; j++){ if( j>=nByte ){ - sprintf(&zBuf[i], " "); + snprintf(&zBuf[i], sizeof(zBuf)-i, " "); }else{ - sprintf(&zBuf[i], " %02x", aData[ofst+j]); + snprintf(&zBuf[i], sizeof(zBuf)-i, " %02x", aData[ofst+j]); val = val*256 + aData[ofst+j]; } i += (int)strlen(&zBuf[i]); } if( asHex ){ - sprintf(&zBuf[i], " 0x%08x", val); + snprintf(&zBuf[i], sizeof(zBuf)-i, " 0x%08x", val); }else{ - sprintf(&zBuf[i], " %9d", val); + snprintf(&zBuf[i], sizeof(zBuf)-i, " %9d", val); } printf("%s %s\n", zBuf, zMsg); } @@ -315,7 +315,7 @@ static i64 describeContent( nDesc++; zDesc++; if( x==0 ){ - sprintf(zDesc, "*"); /* NULL is a "*" */ + snprintf(zDesc, 2, "*"); /* NULL is a "*" */ }else if( x>=1 && x<=6 ){ v = (signed char)pData[0]; pData++; @@ -326,20 +326,20 @@ static i64 describeContent( case 3: v = (v<<8) + pData[0]; pData++; case 2: v = (v<<8) + pData[0]; pData++; } - sprintf(zDesc, "%lld", v); + snprintf(zDesc, 21, "%lld", v); }else if( x==7 ){ - sprintf(zDesc, "real"); + snprintf(zDesc, 5, "real"); pData += 8; }else if( x==8 ){ - sprintf(zDesc, "0"); + snprintf(zDesc, 2, "0"); }else if( x==9 ){ - sprintf(zDesc, "1"); + snprintf(zDesc, 2, "1"); }else if( x>=12 ){ i64 size = (x-12)/2; if( (x&1)==0 ){ - sprintf(zDesc, "blob(%lld)", size); + snprintf(zDesc, 32, "blob(%lld)", size); }else{ - sprintf(zDesc, "txt(%lld)", size); + snprintf(zDesc, 32, "txt(%lld)", size); } pData += size; } @@ -404,14 +404,14 @@ static i64 describeCell( leftChild = ((a[0]*256 + a[1])*256 + a[2])*256 + a[3]; a += 4; n += 4; - sprintf(zDesc, "lx: %d ", leftChild); + snprintf(zDesc, sizeof(zDesc), "lx: %d ", leftChild); nDesc = strlen(zDesc); } if( cType!=5 ){ i = decodeVarint(a, &nPayload); a += i; n += i; - sprintf(&zDesc[nDesc], "n: %lld ", nPayload); + snprintf(&zDesc[nDesc], sizeof(zDesc)-nDesc, "n: %lld ", nPayload); nDesc += strlen(&zDesc[nDesc]); nLocal = localPayload(nPayload, cType); }else{ @@ -421,14 +421,14 @@ static i64 describeCell( i = decodeVarint(a, &rowid); a += i; n += i; - sprintf(&zDesc[nDesc], "r: %lld ", rowid); + snprintf(&zDesc[nDesc], sizeof(zDesc)-nDesc, "r: %lld ", rowid); nDesc += strlen(&zDesc[nDesc]); } if( nLocal65536 ){ - printf("\"%s\": invalid page size.\n", argv[1]); + fprintf(stderr, "\"%s\": invalid page size.\n", argv[1]); return 1; } mxFrame = (sbuf.st_size - 32)/(pagesize + 24);