Compare commits

...

2 Commits

Author SHA1 Message Date
drh 31b50ba83a Improvements to the -fsanitize=fuzzer based database file fuzzer.
FossilOrigin-Name: 585c94db09d21ce5c5275537014ba5cfe75d4df9274d6fd8d07f754e4aa2c640
2018-10-30 00:06:52 +00:00
drh 4a97e6a6a1 In the VACUUM command, defer setting writable_schema until after it has been
determined that the schema is not corrupt.

FossilOrigin-Name: 3afec260142f939c4ee1f3930769ddf383563eb7660b4ebe9478ccc0b8c62ace
2018-10-30 00:06:27 +00:00
4 changed files with 21 additions and 13 deletions
+7 -7
View File
@@ -1,5 +1,5 @@
C Fix\sa\spotential\sassertion\sfault\sthat\scan\soccur\swhile\strying\sto\sDROP\sa\stable\nfrom\sa\scorrupted\sdatabase\sfile.
D 2018-10-29T21:01:28.956
C Improvements\sto\sthe\s-fsanitize=fuzzer\sbased\sdatabase\sfile\sfuzzer.
D 2018-10-30T00:06:52.090
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F Makefile.in 15344f4e44dfd9ffb04e9867bdd352a8a5a86211b8919a6ca724e7063694320b
@@ -574,7 +574,7 @@ F src/update.c 1816d56c1bca1ba4e0ef98cac2f49be62858e9df1dc08844c7067eb41cc44274
F src/upsert.c 0dd81b40206841814d46942a7337786932475f085716042d0cb2fc7791bf8ca4
F src/utf.c 810fbfebe12359f10bc2a011520a6e10879ab2a163bcb26c74768eab82ea62a5
F src/util.c d9eb0a6c4aae1b00a7369eadd7ca0bbe946cb4c953b6751aa20d357c2f482157
F src/vacuum.c 36e7d21a20c0bf6ef4ef7c399d192b5239410b7c4d3c1070fba4e30810d0b855
F src/vacuum.c 3ff33a67360241596f34fd25f166698993e0adc5d539128caa2f271a8e96c30f
F src/vdbe.c 005e691ea4c7d51e6c1a69d9389aeb34700884c85f51681817ddea3fdc2fc39b
F src/vdbe.h 5081dcc497777efe5e9ebe7330d283a044a005e4bdda2e2e984f03bf89a0d907
F src/vdbeInt.h f1f35f70460698d8f5a2bdef1001114babf318e2983a067804e2ae077d8e9827
@@ -771,7 +771,7 @@ F test/date.test 9b73bbeb1b82d9c1f44dec5cf563bf7da58d2373
F test/date2.test 74c234bece1b016e94dd4ef9c8cc7a199a8806c0e2291cab7ba64bace6350b10
F test/dbfuzz.c 73047c920d6210e5912c87cdffd9a1c281d4252e
F test/dbfuzz2-seed1.db e6225c6f3d7b63f9c5b6867146a5f329d997ab105bee64644dc2b3a2f2aebaee
F test/dbfuzz2.c fae8599108dbf6460f8862677a22ee517c9030cdd931df0ed3c66c09ab14e46a
F test/dbfuzz2.c 652f85bac1770e927da139db513234a3eba308f72ac2f8b32f0093d7d19def70
F test/dbpage.test dbf50a4d361f9e45a979432c727506065113124478a7d2db12074fa655e65d6c
F test/dbstatus.test cd83aa623b8aab477269bc94cf8aa90c1e195a144561dd04a1620770aaa8524e
F test/dbstatus2.test f5fe0afed3fa45e57cfa70d1147606c20d2ba23feac78e9a172f2fe8ab5b78ef
@@ -1774,7 +1774,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
P cb874fd87384be397008e953242d5773ef5d64e07c3e1ae352a42a25d70597b4
R b9321fff6a079c972c21f4df38b7700f
P 3afec260142f939c4ee1f3930769ddf383563eb7660b4ebe9478ccc0b8c62ace
R 5ba1ed2d58e00ad524cbc9b9d2137fe0
U drh
Z 665cf9956f9ce1e131787aec1eb32143
Z 84a0a8a72d80528e7cca09743871bcb4
+1 -1
View File
@@ -1 +1 @@
147a9429a558cf34c316ab8f87832e97caff55d92df696ab6fd045466c8c663d
585c94db09d21ce5c5275537014ba5cfe75d4df9274d6fd8d07f754e4aa2c640
+2 -1
View File
@@ -164,7 +164,7 @@ int sqlite3RunVacuum(char **pzErrMsg, sqlite3 *db, int iDb){
saved_nChange = db->nChange;
saved_nTotalChange = db->nTotalChange;
saved_mTrace = db->mTrace;
db->flags |= SQLITE_WriteSchema | SQLITE_IgnoreChecks;
db->flags |= SQLITE_IgnoreChecks;
db->mDbFlags |= DBFLAG_PreferBuiltin | DBFLAG_Vacuum;
db->flags &= ~(SQLITE_ForeignKeys | SQLITE_ReverseOrder | SQLITE_CountRows);
db->mTrace = 0;
@@ -285,6 +285,7 @@ int sqlite3RunVacuum(char **pzErrMsg, sqlite3 *db, int iDb){
** associated storage, so all we have to do is copy their entries
** from the SQLITE_MASTER table.
*/
db->flags |= SQLITE_WriteSchema;
rc = execSqlF(db, pzErrMsg,
"INSERT INTO vacuum_db.sqlite_master"
" SELECT*FROM \"%w\".sqlite_master"
+11 -4
View File
@@ -78,9 +78,9 @@ int LLVMFuzzerTestOneInput(const uint8_t *aData, size_t nByte){
printf("************** nByte=%d ***************\n", (int)nByte);
fflush(stdout);
}
rc = sqlite3_open(":memory:", &db);
rc = sqlite3_open(0, &db);
if( rc ) return 1;
a = sqlite3_malloc64(nByte);
a = sqlite3_malloc64(nByte+1);
if( a==0 ) return 1;
memcpy(a, aData, nByte);
sqlite3_deserialize(db, "main", a, nByte, nByte,
@@ -93,9 +93,16 @@ int LLVMFuzzerTestOneInput(const uint8_t *aData, size_t nByte){
}
sqlite3_exec(db, azSql[i], 0, 0, 0);
}
sqlite3_close(db);
rc = sqlite3_close(db);
if( rc!=SQLITE_OK ){
fprintf(stdout, "sqlite3_close() returns %d\n", rc);
}
if( sqlite3_memory_used()!=0 ){
fprintf(stderr,"Memory leak: %lld bytes\n", sqlite3_memory_used());
int nAlloc = 0;
int nNotUsed = 0;
sqlite3_status(SQLITE_STATUS_MALLOC_COUNT, &nAlloc, &nNotUsed, 0);
fprintf(stderr,"Memory leak: %lld bytes in %d allocations\n",
sqlite3_memory_used(), nAlloc);
exit(1);
}
return 0;