From: mistachkin Date: Fri, 16 Mar 2018 19:10:05 +0000 (+0000) Subject: Fix a parsing issue associated with a corrupt sqlite_master table. X-Git-Tag: version-3.23.0~54^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8bbddd804990caf0ec19235e128c25c631e40f8b;p=thirdparty%2Fsqlite.git Fix a parsing issue associated with a corrupt sqlite_master table. FossilOrigin-Name: 5f779ff6b48ec97efacd49b1715b7e5272694fa839be349c90667812bbffe22b --- diff --git a/manifest b/manifest index d12cd67b79..ed8d0b92d8 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sa\sproblem\sin\stest\sscript\sthread001.test\scausing\sa\sspurious\s"-1\sfiles\swere\nleft\sopen"\serror\swhen\srun\sseparately. -D 2018-03-16T07:48:43.361 +C Fix\sa\sparsing\sissue\sassociated\swith\sa\scorrupt\ssqlite_master\stable. +D 2018-03-16T19:10:05.855 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F Makefile.in 7016fc56c6b9bfe5daac4f34be8be38d8c0b5fab79ccbfb764d3b23bf1c6fff3 @@ -478,7 +478,7 @@ F src/os_win.c eb03c6d52f893bcd7fdd4c6006674c13c1b5e49543fec98d605201af2997171c F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a F src/pager.c 3e3b659b6b3f40b5a5efef6b8890ced490c397a81d96feb5266fde1f7362e608 F src/pager.h 581698f2177e8bd4008fe4760898ce20b6133d1df22139b9101b5155f900df7a -F src/parse.y 3be4b2b5e33ef7dab3128b765898ee786fc6cd698a7f053f756a68f2f238f0aa +F src/parse.y 927e287566764c08e3dbf663a433518e2599fe1d3780386db69df64b4d70a146 F src/pcache.c 135ef0bc6fb2e3b7178d49ab5c9176254c8a691832c1bceb1156b2fbdd0869bd F src/pcache.h 072f94d29281cffd99e46c1539849f248c4b56ae7684c1f36626797fee375170 F src/pcache1.c 716975564c15eb6679e97f734cec1bfd6c16ac3d4010f05f1f8e509fc7d19880 @@ -1712,7 +1712,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 f1784aff4e6ff1c84d3fa0069034290154220fd2fa85c7df342c717ad54f4b91 -R 6365d4cb8120ab9ac72d818a9b1d70a0 -U dan -Z b450edce4db91ca834c891cd7015f37d +P 1774f1c3baf0bc3d83a53c52702696ff21814fa1de07cc38fd098832e6757b09 +R 28201db53ed454b9421b2d31c19681b6 +U mistachkin +Z 278594336baa790fc171fbd2e9db3256 diff --git a/manifest.uuid b/manifest.uuid index 0e8f474cb2..e23a8d1434 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -1774f1c3baf0bc3d83a53c52702696ff21814fa1de07cc38fd098832e6757b09 \ No newline at end of file +5f779ff6b48ec97efacd49b1715b7e5272694fa839be349c90667812bbffe22b \ No newline at end of file diff --git a/src/parse.y b/src/parse.y index 9c41484ab2..638960d242 100644 --- a/src/parse.y +++ b/src/parse.y @@ -169,8 +169,13 @@ create_table_args ::= LP columnlist conslist_opt(X) RP(E) table_options(F). { sqlite3EndTable(pParse,&X,&E,F,0); } create_table_args ::= AS select(S). { - sqlite3EndTable(pParse,0,0,0,S); - sqlite3SelectDelete(pParse->db, S); + if( pParse->db->init.busy==0 ){ + sqlite3EndTable(pParse,0,0,0,S); + sqlite3SelectDelete(pParse->db, S); + }else{ + sqlite3SelectDelete(pParse->db, S); + sqlite3ErrorMsg(pParse, "corrupt schema"); + } } %type table_options {int} table_options(A) ::= . {A = 0;}