]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Silently ignore parser stack overflow when parsing a malformed schema in
authordrh <drh@noemail.net>
Sun, 19 Apr 2015 22:31:45 +0000 (22:31 +0000)
committerdrh <drh@noemail.net>
Sun, 19 Apr 2015 22:31:45 +0000 (22:31 +0000)
PRAGMA writable_schema mode.

FossilOrigin-Name: 2cb37b959c66b5ae3535ab81ba14a4ebf9732df7

manifest
manifest.uuid
src/build.c
test/misc5.test

index afcf92746e7f6f922040b2b4a64a9e87d4018441..6f897f3bcf6eabbb7890c2861039cca6893dd911 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sanother\sassert()\sthat\sis\snot\strue\sif\sthe\sdatabase\sschema\sis\scorrupt.
-D 2015-04-19T21:59:19.589
+C Silently\signore\sparser\sstack\soverflow\swhen\sparsing\sa\smalformed\sschema\sin\nPRAGMA\swritable_schema\smode.
+D 2015-04-19T22:31:45.600
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in faaf75b89840659d74501bea269c7e33414761c1
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -176,7 +176,7 @@ F src/btmutex.c 45a968cc85afed9b5e6cf55bf1f42f8d18107f79
 F src/btree.c 127aceb71ba93f59bc9c6ba810e992a04299e98a
 F src/btree.h 969adc948e89e449220ff0ff724c94bb2a52e9f1
 F src/btreeInt.h 973a22a6fd61350b454ad614832b1f0a5e25a1e4
-F src/build.c 2e46e275a9104bbebdaf04bccae3fe47c95d57b2
+F src/build.c e246c2cea69c8f6fc825a156ea2de9dd4a17f18b
 F src/callback.c 7b44ce59674338ad48b0e84e7b72f935ea4f68b0
 F src/complete.c a5cf5b4b56390cfb7b8636e8f7ddef90258dd575
 F src/ctime.c 98f89724adc891a1a4c655bee04e33e716e05887
@@ -747,7 +747,7 @@ F test/misc1.test 783ba75743b2cf71e0f646bf540a6cef57264811
 F test/misc2.test 00d7de54eda90e237fc9a38b9e5ccc769ebf6d4d
 F test/misc3.test cf3dda47d5dda3e53fc5804a100d3c82be736c9d
 F test/misc4.test 9c078510fbfff05a9869a0b6d8b86a623ad2c4f6
-F test/misc5.test 528468b26d03303b1f047146e5eefc941b9069f5
+F test/misc5.test f96428ea95b3820aafc6f1c50cf48a09e4597ee1
 F test/misc6.test 953cc693924d88e6117aeba16f46f0bf5abede91
 F test/misc7.test edd0b63e2ee29a256900b0514f6fff27e19e9bb2
 F test/misc8.test fc2754d38892f7dac30c22db3616c2764f117d66
@@ -1251,7 +1251,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P b1ed949584a2526c04952b98c3aa283427f45e10
-R 7eb252d844c06f104bb11959e0f1c997
+P bc97cec6338b16a4e9b1a9457d01bb7fe462934d
+R 01f9eeee512ab8c1eb8c49d658fe5ba3
 U drh
-Z 149b8d57c1b56c76702cf167c619275e
+Z 025d0c7f7a9e2517785c78c21f380610
index a0dbc177c15ce6b8f3e63fa30fc0b5d462a00587..09db9c087627897b8d3cc12507b848d647937378 100644 (file)
@@ -1 +1 @@
-bc97cec6338b16a4e9b1a9457d01bb7fe462934d
\ No newline at end of file
+2cb37b959c66b5ae3535ab81ba14a4ebf9732df7
\ No newline at end of file
index 19783ecee3ba552e93323b07b799888eac75b960..11f0b39245726c5e4fe3e94d2aadd77d5ca3ca55 100644 (file)
@@ -2451,6 +2451,7 @@ void sqlite3DropTable(Parse *pParse, SrcList *pName, int isView, int noErr){
   }
   assert( pParse->nErr==0 );
   assert( pName->nSrc==1 );
+  if( sqlite3ReadSchema(pParse) ) goto exit_drop_table;
   if( noErr ) db->suppressErr++;
   pTab = sqlite3LocateTableItem(pParse, isView, &pName->a[0]);
   if( noErr ) db->suppressErr--;
index 14ba44ead0a1d239c2e81c5bcfa0e02416b28222..30176b80824ff33f1f0e0d7e292a09c6b02dcb82 100644 (file)
@@ -583,6 +583,24 @@ do_test misc5-7.1 {
   catchsql $sql
 } {1 {parser stack overflow}}
 
+# Parser stack overflow is silently ignored when it occurs while parsing the
+# schema and PRAGMA writable_schema is turned on.
+#
+do_test misc5-7.2 {
+  sqlite3 db2 :memory:
+  catchsql {
+    CREATE TABLE t1(x UNIQUE);
+    PRAGMA writable_schema=ON;
+    UPDATE sqlite_master SET sql='CREATE table t(o CHECK(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((;VALUES(o)';
+    BEGIN;
+    CREATE TABLE t2(y);
+    ROLLBACK;
+    DROP TABLE IF EXISTS D;
+  } db2
+} {0 {}}
+db2 close
+  
+
 # Ticket #1911
 #
 ifcapable compound {