From: drh <> Date: Tue, 3 May 2022 12:11:16 +0000 (+0000) Subject: Add assert()s to show that jumps always land an an instruction that is between X-Git-Tag: version-3.39.0~173 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=207f6263569835b649b1f472e12dacba8ee6a21b;p=thirdparty%2Fsqlite.git Add assert()s to show that jumps always land an an instruction that is between 1 and Vdbe.nOp-1. Had these assert()s been in place before, they would have caused an assertion fault for the byte-code error reported by [forum:/forumpost/2482b32700|forum post 2482b32700]. FossilOrigin-Name: 8f8a58feb7047d19522ca32efbe42fd9ddf49aaf9064f7373eb56a88982406a2 --- diff --git a/manifest b/manifest index 5c3330d792..6f5ed17f42 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Remove\sa\stestcase()\smacro\staht\swas\smade\sobsolete\sby\s[a8da85c57e07721d]. -D 2022-05-02T15:47:57.110 +C Add\sassert()s\sto\sshow\sthat\sjumps\salways\sland\san\san\sinstruction\sthat\sis\sbetween\n1\sand\sVdbe.nOp-1.\s\sHad\sthese\sassert()s\sbeen\sin\splace\sbefore,\sthey\swould\shave\ncaused\san\sassertion\sfault\sfor\sthe\sbyte-code\serror\sreported\sby\n[forum:/forumpost/2482b32700|forum\spost\s2482b32700]. +D 2022-05-03T12:11:16.206 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -625,7 +625,7 @@ F src/upsert.c 8789047a8f0a601ea42fa0256d1ba3190c13746b6ba940fe2d25643a7e991937 F src/utf.c ee39565f0843775cc2c81135751ddd93eceb91a673ea2c57f61c76f288b041a0 F src/util.c 602fe229f32a96ceccae4f40824129669582096f7c355f53dbac156c9fecef23 F src/vacuum.c 6c38ddc52f0619865c91dae9c441d4d48bf3040d7dc1bc5b22da1e45547ed0b3 -F src/vdbe.c 9527ab7f71c5b0291e5ed7727f213f4d7f6e0a82af019da5b365fd5a0f56bb96 +F src/vdbe.c a6a20956fa128c0b8d3c5592a9a3db890a46cf626f46ffee0cab2ac5bf8d04b2 F src/vdbe.h 07641758ca8b4f4c6d81ea667ea167c541e6ece21f5574da11e3d21ec37e2662 F src/vdbeInt.h ef43f7fdc5fde29fc3fd29c506c12830f366178fdb4edbbf0cbc3dfbd1278b5f F src/vdbeapi.c 354c893f1500cf524cc45c32879b9c68893a28b77e3442c24668d6afe4236217 @@ -1951,8 +1951,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 bcaa4a44749d157c5953c6f54c88b1ba29b4035f4b21fce986b7efbea372e109 -R e9ba3eaded9a5b3eaa4edaa039c7ca25 +P 053cf45ecaa7eac8cc64c7b2672807f736a45575a84b426263b2e1feb060b401 +R ac9704868f7c1c02692fbf03e14bf6d3 U drh -Z 097076191b03601e3038661a0fda0c02 +Z 2799ccc42c2b61451a2da6d606baab94 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index da0a44df88..039e77d8b3 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -053cf45ecaa7eac8cc64c7b2672807f736a45575a84b426263b2e1feb060b401 \ No newline at end of file +8f8a58feb7047d19522ca32efbe42fd9ddf49aaf9064f7373eb56a88982406a2 \ No newline at end of file diff --git a/src/vdbe.c b/src/vdbe.c index 087a837955..589f5df9f5 100644 --- a/src/vdbe.c +++ b/src/vdbe.c @@ -1043,6 +1043,8 @@ case OP_InitCoroutine: { /* jump */ /* Most jump operations do a goto to this spot in order to update ** the pOp pointer. */ jump_to_p2: + assert( pOp->p2>0 ); /* There are never any jumps to instruction 0 */ + assert( pOp->p2nOp ); /* Jumps must be in range */ pOp = &aOp[pOp->p2 - 1]; break; }