]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a crash that could occur in SQLITE_MAX_EXPR_DEPTH=0 builds when processing SQL...
authordan <dan@noemail.net>
Wed, 16 Sep 2020 16:39:35 +0000 (16:39 +0000)
committerdan <dan@noemail.net>
Wed, 16 Sep 2020 16:39:35 +0000 (16:39 +0000)
FossilOrigin-Name: 6438db4570423c918a6f90df8eb17f16988d505cd0432219dca7548bb884c9f9

manifest
manifest.uuid
src/expr.c
src/sqliteLimit.h
test/releasetest_data.tcl

index 6d0b6c4493f3bab4857f4d847a1ec746f86b99e8..747bf1ec8578ae4f9223468ca0015823d98691c9 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Do\snot\sskip\sover\sTK_IF_NULL_ROW\soperators\swhen\sbypassing\sTK_COLLATE\soperators.\nFix\sto\scheck-in\s[ac31edd3eeafcef4]\swhich\swas\sitself\sa\sfix\sfor\sticket\n[45f4bf4eb4ffd788].
-D 2020-09-16T16:38:09.171
+C Fix\sa\scrash\sthat\scould\soccur\sin\sSQLITE_MAX_EXPR_DEPTH=0\sbuilds\swhen\sprocessing\sSQL\scontaining\ssyntax\serrors.
+D 2020-09-16T16:39:35.274
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -487,7 +487,7 @@ F src/date.c dace306a10d9b02ee553d454c8e1cf8d3c9b932e137738a6b15b90253a9bfc10
 F src/dbpage.c 8a01e865bf8bc6d7b1844b4314443a6436c07c3efe1d488ed89e81719047833a
 F src/dbstat.c 3aa79fc3aed7ce906e4ea6c10e85d657299e304f6049861fe300053ac57de36c
 F src/delete.c 410c771c25afc113c273d9efad6ab6881bda28c75a1838b9d2c52ba20d1dc704
-F src/expr.c 616244b0f99ca50320b44c547972ed8de7e92c2088b300810b9ac804c40fbc9c
+F src/expr.c 4c8b9c2942adb896b9d1613794bd00cbf98c94e38c41cd5720b78bcdc21a965d
 F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
 F src/fkey.c 83372403298e6a7dd989a47aaacdbaa5b4307b5199dbd56e07d4896066b3de72
 F src/func.c 2333eb4277f55a5efdc12ef754e7d7ec9105d257b2fd00301d23ce1e8fa67dc0
@@ -541,7 +541,7 @@ F src/sqlite.h.in d2c03414a8ee5d4a6855c04dd7cd5998e45139b0fe66b65bae86d4223edd09
 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
 F src/sqlite3ext.h 2d1af80082edffd71c6f96f70ad1ce6a4fb46615ad10291fc77fe0dea9ff0197
 F src/sqliteInt.h 51a6847d9ee559b8c2be294a3184e7b7f8a51bfbbfd265b521be77bf118ca7a7
-F src/sqliteLimit.h 95cb8479ca459496d9c1c6a9f76b38aee12203a56ce1092fe13e50ae2454c032
+F src/sqliteLimit.h d7323ffea5208c6af2734574bae933ca8ed2ab728083caa117c9738581a31657
 F src/status.c 4b8bc2a6905163a38b739854a35b826c737333fab5b1f8e03fa7eb9a4799c4c1
 F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1
 F src/tclsqlite.c 986b6391f02cd9b53c1d688be55899f6ffddeb8e8014cd83c1b73ff912579a71
@@ -1272,7 +1272,7 @@ F test/regexp1.test 497ea812f264d12b6198d6e50a76be4a1973a9d8
 F test/regexp2.test 40e894223b3d6672655481493f1be12012f2b33c
 F test/reindex.test cd9d6021729910ece82267b4f5e1b5ac2911a7566c43b43c176a6a4732e2118d
 F test/releasetest.tcl fb76d8fcc95ac29d6356cd9e52b726ab9e43a24082897618dfbcb7c2b0049153 x
-F test/releasetest_data.tcl 9919fc6ac5bc92f8878fecfd1840db15999f660a6c9f609240b41aa62b885c88
+F test/releasetest_data.tcl ce3bebf5a6755412eca6f37f4cb7f8768027a8d9af8aac129dc10e656f4c0ff5
 F test/resetdb.test 8062cf10a09d8c048f8de7711e94571c38b38168db0e5877ba7561789e5eeb2b
 F test/resolver01.test f4022acafda7f4d40eca94dbf16bc5fc4ac30ceb
 F test/rollback.test 06680159bc6746d0f26276e339e3ae2f951c64812468308838e0a3362d911eaa
@@ -1879,11 +1879,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P fca8dc8b578f215a969cd899336378966156154710873e68b3d9ac5881b0ff3f
-Q +871f2ddcfbb9196dbd851a350e3471ee6d242d86bbd755201f7e2406fce3ac55
-R db78fe2db2e529c4d9974ddf014e3ba5
-T *branch * branch-3.33
-T *sym-branch-3.33 *
-T -sym-trunk *
+P 850416115423d021c24f0e3eca5fd93143961227e76ff61ccaedea09e13e9efe
+Q +5f58dd3a19605b6f49b4364fa29892502eff35f12a7693a8694100e1844711ea
+R c56a8133a73d7d322888fcd91f815f41
 U dan
-Z 4b505d39a2888e58a8d45a124557fa96
+Z 31be61dcafb32e4cc7b3739722d57444
index ec4d41753ddbdcba091d877bd8f3d123f2151c0d..15f63913118c822073385f24d47a8894c5196c85 100644 (file)
@@ -1 +1 @@
-850416115423d021c24f0e3eca5fd93143961227e76ff61ccaedea09e13e9efe
\ No newline at end of file
+6438db4570423c918a6f90df8eb17f16988d505cd0432219dca7548bb884c9f9
\ No newline at end of file
index 244412b384654a412ae255c0b07db2d19394b422..7277bb75de75dbc29ce9f0b48c74b806c0667ef4 100644 (file)
@@ -768,6 +768,7 @@ int sqlite3SelectExprHeight(Select *p){
 ** Expr.flags. 
 */
 void sqlite3ExprSetHeightAndFlags(Parse *pParse, Expr *p){
+  if( pParse->nErr ) return;
   if( p && p->x.pList && !ExprHasProperty(p, EP_xIsSelect) ){
     p->flags |= EP_Propagate & sqlite3ExprListFlags(p->x.pList);
   }
index a7302575c5b7fc1ead3aa55807e2e8037ba531ed..08703cb73af81c189f0edf06a391c2cc5665f682 100644 (file)
 ** The maximum depth of an expression tree. This is limited to 
 ** some extent by SQLITE_MAX_SQL_LENGTH. But sometime you might 
 ** want to place more severe limits on the complexity of an 
-** expression.
-**
-** A value of 0 used to mean that the limit was not enforced.
-** But that is no longer true.  The limit is now strictly enforced
-** at all times.
+** expression. A value of 0 means that there is no limit.
 */
 #ifndef SQLITE_MAX_EXPR_DEPTH
 # define SQLITE_MAX_EXPR_DEPTH 1000
index bd3f108118aafbd4a6631ff220980546f065b5f2..c716beb3a607dbdee1509481d5735736c94674af 100644 (file)
@@ -135,6 +135,11 @@ array set ::Configs [strip_comments {
     -DSQLITE_MUTATION_TEST
     --enable-fts5 --enable-json1
   }
+  "Debug-Two" {
+    -DSQLITE_DEFAULT_MEMSTATUS=0
+    -DSQLITE_MAX_EXPR_DEPTH=0
+    --enable-debug
+  }
   "Fast-One" {
     -O6
     -DSQLITE_ENABLE_FTS4=1
@@ -284,6 +289,7 @@ array set ::Platforms [strip_comments {
     "Check-Symbols*"          checksymbols
     "Fast-One"                "fuzztest test"
     "Debug-One"               "mptest test"
+    "Debug-Two"               "test"
     "Have-Not"                test
     "Secure-Delete"           test
     "Unlock-Notify"           "QUICKTEST_INCLUDE=notify2.test test"