From 4eac5f04ab996fc5bf262edfcead84bc4e8a3ccb Mon Sep 17 00:00:00 2001 From: drh Date: Tue, 24 Dec 2019 15:01:17 +0000 Subject: [PATCH] Extra defense against problems following an OOM. dbsqlfuzz find. Also import the latest dbsqlfuzz test cases. FossilOrigin-Name: 0a70f5ddaf3567f335cc0fd0fcd5303e2afb5e38a6388faddf5cab1f2a74e3dd --- manifest | 16 ++++++++-------- manifest.uuid | 2 +- src/expr.c | 5 ++++- test/fuzzdata8.db | Bin 1571840 -> 1607680 bytes 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/manifest b/manifest index 5f1dc5644d..8b62b2ce6a 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sa\sspurious\sreport\sof\scorruption\sthat\scould\sbe\smade\sby\sthe\sfts5\sintegrity-check\sin\sSQLITE_DEBUG\sbuilds\sif\sthe\sfts5\sindex\scontains\smalformed\sutf\stext. -D 2019-12-24T14:27:03.948 +C Extra\sdefense\sagainst\sproblems\sfollowing\san\sOOM.\s\sdbsqlfuzz\sfind.\s\sAlso\nimport\sthe\slatest\sdbsqlfuzz\stest\scases. +D 2019-12-24T15:01:17.851 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -479,7 +479,7 @@ F src/date.c e1d8ac7102f3f283e63e13867acb0efa33861cf34f0faf4cdbaf9fa7a1eb7041 F src/dbpage.c 135eb3b5e74f9ef74bde5cec2571192c90c86984fa534c88bf4a055076fa19b7 F src/dbstat.c 6c407e549406c10fde9ac3987f6d734459205239ad370369bc5fcd683084a4fa F src/delete.c a5c59b9c0251cf7682bc52af0d64f09b1aefc6781a63592c8f1136f7b73c66e4 -F src/expr.c ba7bed1c4f5ef0e90d80e9afea6f0cbff22827608ff4251162d16107758b4933 +F src/expr.c 518e46716bcf072b41e3e88209965e2495f4c7888f2f698ff00b3e415738912d F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007 F src/fkey.c 92a248ec0fa4ed8ab60c98d9b188ce173aaf218f32e7737ba77deb2a684f9847 F src/func.c ed33e38cd642058182a31a3f518f2e34f4bbe53aa483335705c153c4d3e50b12 @@ -1017,7 +1017,7 @@ F test/fuzzdata4.db b502c7d5498261715812dd8b3c2005bad08b3a26e6489414bd13926cd3e4 F test/fuzzdata5.db e35f64af17ec48926481cfaf3b3855e436bd40d1cfe2d59a9474cb4b748a52a5 F test/fuzzdata6.db 92a80e4afc172c24f662a10a612d188fb272de4a9bd19e017927c95f737de6d7 F test/fuzzdata7.db e7a86fd83dda151d160445d542e32e5c6019c541b3a74c2a525b6ac640639711 -F test/fuzzdata8.db f8da99ea7e57a436e300e59b2d5ad0d0f765fcb0468b2c1b1f9b9f03d928e0ef +F test/fuzzdata8.db 7fd98a5d4c281d993950212507ad56a55ace0cf3083785eb3366aad9ebd8041c F test/fuzzer1.test 3d4c4b7e547aba5e5511a2991e3e3d07166cfbb8 F test/fuzzer2.test a85ef814ce071293bce1ad8dffa217cbbaad4c14 F test/fuzzerfault.test 8792cd77fd5bce765b05d0c8e01b9edcf8af8536 @@ -1852,7 +1852,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 b473ad35c5ce355853e1805a5c0658bda1500775f22f59c6b6759ae990e65aca -R 88e0f620d2e9b56c3b0053f9411f1c0c -U dan -Z 0716b408ff1a9ce855db0a1c4ccdfffe +P a11b393dc2c882cf0b3c47c3405bf43ca1d6459605bd39cccce4d32da653a72d +R 27ce7f877a564e4328201c0fcf5cd524 +U drh +Z 02d9d6056c86e58fa1f721e17435d869 diff --git a/manifest.uuid b/manifest.uuid index 83c2c41554..f01574c641 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -a11b393dc2c882cf0b3c47c3405bf43ca1d6459605bd39cccce4d32da653a72d \ No newline at end of file +0a70f5ddaf3567f335cc0fd0fcd5303e2afb5e38a6388faddf5cab1f2a74e3dd \ No newline at end of file diff --git a/src/expr.c b/src/expr.c index 617fcf0633..601574e68e 100644 --- a/src/expr.c +++ b/src/expr.c @@ -2207,7 +2207,9 @@ int sqlite3ExprCanBeNull(const Expr *p){ case TK_COLUMN: return ExprHasProperty(p, EP_CanBeNull) || p->y.pTab==0 || /* Reference to column of index on expression */ - (p->iColumn>=0 && p->y.pTab->aCol[p->iColumn].notNull==0); + (p->iColumn>=0 + && ALWAYS(p->y.pTab->aCol!=0) /* Defense against OOM problems */ + && p->y.pTab->aCol[p->iColumn].notNull==0); default: return 1; } @@ -3224,6 +3226,7 @@ static void sqlite3ExprCodeIN( }else{ destStep2 = destStep6 = sqlite3VdbeMakeLabel(pParse); } + if( pParse->nErr ) goto sqlite3ExprCodeIN_finished; for(i=0; ipLeft, i); if( sqlite3ExprCanBeNull(p) ){ diff --git a/test/fuzzdata8.db b/test/fuzzdata8.db index 8dd6e3a8f12d74bae0614e769de5a157e94cafbe..7247ea141662d090df2375bb219475c6802ce5e7 100644 GIT binary patch delta 30564 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 UXPZRgQ4@mal4ACPyulCu4-=&haR2}S delta 22522 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 &UE0jp+ClXTl>{Re5bF(}GW!#I=r($BzWJ68Gy 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