From: drh Date: Wed, 2 May 2018 15:00:26 +0000 (+0000) Subject: Prevent VACUUM from running any commands in sqlite_master.sql other than X-Git-Tag: version-3.24.0~73 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=85a40ebc03676fd5b774fad42ae7a88d419fe4dc;p=thirdparty%2Fsqlite.git Prevent VACUUM from running any commands in sqlite_master.sql other than CREATE statements. That is all that should be there anyhow. This fixes a problem discovered by OSSFuzz. Test cases in TH3. FossilOrigin-Name: ab0d99d0b5edece4c639baa47ce1ca2c02774cb2515e5b7f36d9bd312ccd3310 --- diff --git a/manifest b/manifest index f0aff63579..866465edaf 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sa\sproblem\sin\sthe\sxBestIndex\smethod\sof\sthe\sclosure\sextension\scausing\sit\sto\nallocate\snon-contiguous\sargvIndex\svalues\sin\ssome\scases\s(an\s"xBestIndex\nmalfunction"\serror). -D 2018-05-02T08:12:22.566 +C Prevent\sVACUUM\sfrom\srunning\sany\scommands\sin\ssqlite_master.sql\sother\sthan\nCREATE\sstatements.\s\sThat\sis\sall\sthat\sshould\sbe\sthere\sanyhow.\s\sThis\sfixes\na\sproblem\sdiscovered\sby\sOSSFuzz.\s\sTest\scases\sin\sTH3. +D 2018-05-02T15:00:26.033 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F Makefile.in 5ce9343cba9c189046f1afe6d2bcc1f68079439febc05267b98aec6ecc752439 @@ -562,7 +562,7 @@ F src/update.c 5be2f501ddc704fc04183bdb28b25eab930bb8553d973429a089ec94fa85cf2b F src/upsert.c ae4a4823b45c4daf87e8aea8c0f582a8844763271f5ed54ee5956c4c612734f4 F src/utf.c 810fbfebe12359f10bc2a011520a6e10879ab2a163bcb26c74768eab82ea62a5 F src/util.c d9eb0a6c4aae1b00a7369eadd7ca0bbe946cb4c953b6751aa20d357c2f482157 -F src/vacuum.c 762ee9bbf8733d87d8cd06f58d950e881982e416f8c767334a40ffd341b6bff5 +F src/vacuum.c 593498d6d1f1f3c5561c1476132d3b03af33881ff9f27ce4e48d4ba60be3615d F src/vdbe.c 066a4e1de2ed83e253adfd2e97a684cf562eaa41d31ee7f3d3e4c8aea4485a55 F src/vdbe.h 574ce9a0d57b026fc93ac379a339b8d391977f335ab4176a7e21ba902e9184bd F src/vdbeInt.h 95f7adfdc5c8f1353321f55a6c5ec00a90877e3b85af5159e393afb41ff54110 @@ -1727,7 +1727,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 22089ea2bbea93eb1da7f08344789a5455077169443e40025f053d2a117f1c08 -R 4366c3e52bbd0f10fc2d8dde8b988b3b -U dan -Z d8568d2c99d0406cb3f7adcc92b802b9 +P 0c67150749cb3d067e14b2dcac9c3489e0f14bd18c0387f1d9bc93d21fc96fe5 +R 05ae73916277803fcebbb023b759986c +U drh +Z 0a57dfa0969cac36c6f9349555316be2 diff --git a/manifest.uuid b/manifest.uuid index 02f59e9ef9..1f86bdd5bb 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -0c67150749cb3d067e14b2dcac9c3489e0f14bd18c0387f1d9bc93d21fc96fe5 \ No newline at end of file +ab0d99d0b5edece4c639baa47ce1ca2c02774cb2515e5b7f36d9bd312ccd3310 \ No newline at end of file diff --git a/src/vacuum.c b/src/vacuum.c index c7a14a675d..103aee0bd4 100644 --- a/src/vacuum.c +++ b/src/vacuum.c @@ -247,7 +247,7 @@ int sqlite3RunVacuum(char **pzErrMsg, sqlite3 *db, int iDb){ rc = execSqlF(db, pzErrMsg, "SELECT sql FROM \"%w\".sqlite_master" " WHERE type='table'AND name<>'sqlite_sequence'" - " AND coalesce(rootpage,1)>0", + " AND coalesce(rootpage,1)>0 AND sql LIKE 'CREATE%%'", zDbMain ); if( rc!=SQLITE_OK ) goto end_of_vacuum;