]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Check that malloc() has not already failed when invoking the xUpdate() method
authordan <dan@noemail.net>
Wed, 13 Jun 2018 11:11:13 +0000 (11:11 +0000)
committerdan <dan@noemail.net>
Wed, 13 Jun 2018 11:11:13 +0000 (11:11 +0000)
of a virtual table implementation. This fixes an assert() failure in FTS5 that
could occur following an OOM condition.

FossilOrigin-Name: e9a7e4d58f3716991309ca0e3f080717e473c7c231685954aceee36172f19cf2

manifest
manifest.uuid
src/vdbe.c
test/releasetest.tcl

index f89b5ce859dc5e98d6c29300cb8064f038e06b36..a23bb3a5a5a0166a5543f77bb70595dd3208e62f 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\sthe\sunused\sSQLITE_CANTOPEN_DIRTYWAL\sresult\scode.\s\sThis\scode\swas\sused\nin\ssome\shistorical\sversions\son\sthe\sapple-osx\sbranch\sbut\swas\sremoved\nby\scheck-in\s[27e20d699872b2b8].\s\sRestore\sit\sso\sthat\sold\scode\sthat\sactually\nreferences\sthat\sresult\scode\swill\sstill\scompile.
-D 2018-06-13T02:20:34.202
+C Check\sthat\smalloc()\shas\snot\salready\sfailed\swhen\sinvoking\sthe\sxUpdate()\smethod\nof\sa\svirtual\stable\simplementation.\sThis\sfixes\san\sassert()\sfailure\sin\sFTS5\sthat\ncould\soccur\sfollowing\san\sOOM\scondition.
+D 2018-06-13T11:11:13.092
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F Makefile.in bfc40f350586923e0419d2ea4b559c37ec10ee4b6e210e08c14401f8e340f0da
@@ -565,7 +565,7 @@ F src/upsert.c 47edd408cc73f8d3c00a140550d1ad180b407c146285947969dd09874802bf88
 F src/utf.c 810fbfebe12359f10bc2a011520a6e10879ab2a163bcb26c74768eab82ea62a5
 F src/util.c d9eb0a6c4aae1b00a7369eadd7ca0bbe946cb4c953b6751aa20d357c2f482157
 F src/vacuum.c 36e7d21a20c0bf6ef4ef7c399d192b5239410b7c4d3c1070fba4e30810d0b855
-F src/vdbe.c 7509cbdad75624ed397e581210db27cb2c99882a40cd1c3c2948641220a14a48
+F src/vdbe.c f1bf4e51bcbea0f63174bee5da822d112970a547c06bf6cfb45f77fe6ebd6541
 F src/vdbe.h 9c8c245fa3785266c269ab02c135c836ff49a307612186686bcdae500f409945
 F src/vdbeInt.h 4531c172f8a51f90e3dcb8f49531ab64b17ad3aef85d19a6e8c925c2ddf59c66
 F src/vdbeapi.c af4a3de00d1851bcbc55b85dfbe52849aa2b1e17b4a5a1f3d9c257df7af361ff
@@ -1173,7 +1173,7 @@ F test/rdonly.test 64e2696c322e3538df0b1ed624e21f9a23ed9ff8
 F test/regexp1.test 497ea812f264d12b6198d6e50a76be4a1973a9d8
 F test/regexp2.test 40e894223b3d6672655481493f1be12012f2b33c
 F test/reindex.test 44edd3966b474468b823d481eafef0c305022254
-F test/releasetest.tcl 5f15ab8056799e9a6e26a310d49236d2e774d6a30d0ec74601e18d4ce146b79c x
+F test/releasetest.tcl 769892f81050b3f59c66f274d478d855159b474ea27019dec82f1215c0b91ef7 x
 F test/resetdb.test 2107b34a8c437183f48eb833905df43818160a55f4ac69bbaf54f356fb2b27bd
 F test/resolver01.test f4022acafda7f4d40eca94dbf16bc5fc4ac30ceb
 F test/rollback.test 06680159bc6746d0f26276e339e3ae2f951c64812468308838e0a3362d911eaa
@@ -1731,7 +1731,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 858fc52b237702b5e0381eebf5c158bffd7371ff0053a8583b8c175f8f691c82
-R 6ceedb097c0849604ae5e518ced6ab8b
-U drh
-Z cf184defe88fa33ab23b824c945dcab2
+P 9f40383eed936a6921ef8dc94775eb55d03a761f36eda7be1b9cdd0a0d30fa80
+R 4bafe6447638b15993b3f38fe7f8476f
+U dan
+Z 8be96dc0a0ca0b6fd2e41a312298600e
index 4f58cf42e5bd6c7e6d267f613f1d8aec53530351..e5613edab7f1413643382581af874d48572bdb74 100644 (file)
@@ -1 +1 @@
-9f40383eed936a6921ef8dc94775eb55d03a761f36eda7be1b9cdd0a0d30fa80
\ No newline at end of file
+e9a7e4d58f3716991309ca0e3f080717e473c7c231685954aceee36172f19cf2
\ No newline at end of file
index 6cdfadb563aa90fa835647f95e24b7b31a09eb70..823b0348153162b00c15034857510edf9aedf2b6 100644 (file)
@@ -6999,6 +6999,7 @@ case OP_VUpdate: {
        || pOp->p5==OE_Abort || pOp->p5==OE_Ignore || pOp->p5==OE_Replace
   );
   assert( p->readOnly==0 );
+  if( db->mallocFailed ) goto no_mem;
   sqlite3VdbeIncrWriteCounter(p, 0);
   pVtab = pOp->p4.pVtab->pVtab;
   if( pVtab==0 || NEVER(pVtab->pModule==0) ){
index 01a0795bfa7c010215f22e7647dd57c6bca228d4..65f6dadad9aeb5687d23c3ac14a42dcdd7311ea7 100755 (executable)
@@ -127,6 +127,7 @@ array set ::Configs [strip_comments {
     -DSQLITE_ENABLE_HIDDEN_COLUMNS
     -DSQLITE_MAX_ATTACHED=125
     -DSQLITE_MUTATION_TEST
+    --enable-fts5 --enable-json1
   }
   "Fast-One" {
     -O6