From: drh Date: Thu, 24 Aug 2017 14:04:31 +0000 (+0000) Subject: Make sure the sqlite3_result_pointer() interface does not leave a VM register X-Git-Tag: version-3.20.1~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=535b306e1b74d5c845229b36adde3dd959df5375;p=thirdparty%2Fsqlite.git Make sure the sqlite3_result_pointer() interface does not leave a VM register in an inconsistent state. Fix for ticket [7486aa54b968e9b5]. Test cases are in TH3. FossilOrigin-Name: abc7adfda27b67ef0e3eb4da72811aac7e838cc4bca183007c308dc46362fd1e --- diff --git a/manifest b/manifest index 5594bc496b..dab1d3be9d 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Version\s3.20.0 -D 2017-08-01T13:24:15.490 +C Make\ssure\sthe\ssqlite3_result_pointer()\sinterface\sdoes\snot\sleave\sa\sVM\sregister\nin\san\sinconsistent\sstate.\s\sFix\sfor\sticket\s[7486aa54b968e9b5].\s\sTest\scases\nare\sin\sTH3. +D 2017-08-24T14:04:31.936 F Makefile.in d9873c9925917cca9990ee24be17eb9613a668012c85a343aef7e5536ae266e8 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc 02b469e9dcd5b7ee63fc1fb05babc174260ee4cfa4e0ef2e48c3c6801567a016 @@ -523,7 +523,7 @@ F src/vacuum.c 874c0f2f15ab2908748297d587d22d485ea96d55aaec91d4775dddb2e24d2ecf F src/vdbe.c 1e541ec7ff409bbabcc6b4f154957296fff5827c16c2ab0056348acae75685bf F src/vdbe.h d50cadf12bcf9fb99117ef392ce1ea283aa429270481426b6e8b0280c101fd97 F src/vdbeInt.h ff2b7db0968d20e6184aee256d2e535d565f5a172e3588a78adb166a41fc4911 -F src/vdbeapi.c 0823531191f9d5588a245ed5b39306798681814e9e8099d54a3213a13a28fbe7 +F src/vdbeapi.c d362429ebb02df609a71a24abb295406b47252a3caa231d0bd0d715033b5d362 F src/vdbeaux.c 3fe68bad02b33b09e08bdc0ad90d6b92b3d571f7864c3d047abca1bde050751c F src/vdbeblob.c 359891617358deefc85bef7bcf787fa6b77facb9 F src/vdbemem.c 9ca2854976f35db40341977e688a08204c96427505f5b90215dc7970f6ea42c4 @@ -1637,10 +1637,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 96ff1675721c744b5c1173a99fc2ad3a2df64ca8e931738e3a87c72a6f8b1e72 -R d54edcf59605e0e896e53b6d832d1e46 -T +bgcolor * #d0c0ff -T +sym-release * -T +sym-version-3.20.0 * +P 9501e22dfeebdcefa783575e47c60b514d7c2e0cad73b2a496c0bc4b680900a8 +Q +d2f9230c5c7ad6166e7d2b649f77960fa58b1cb583e529a43882753ab348413c +R 23b0ea14abc8da30d284a926d6ebd95e U drh -Z ea5d6ee550aa5aa577909fef74ad40da +Z c70586d4650d253eee17f42116d32ade diff --git a/manifest.uuid b/manifest.uuid index 9e42b7b91c..4165f03f5e 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -9501e22dfeebdcefa783575e47c60b514d7c2e0cad73b2a496c0bc4b680900a8 \ No newline at end of file +abc7adfda27b67ef0e3eb4da72811aac7e838cc4bca183007c308dc46362fd1e \ No newline at end of file diff --git a/src/vdbeapi.c b/src/vdbeapi.c index 24545e4f12..555721e96c 100644 --- a/src/vdbeapi.c +++ b/src/vdbeapi.c @@ -398,7 +398,8 @@ void sqlite3_result_pointer( ){ Mem *pOut = pCtx->pOut; assert( sqlite3_mutex_held(pOut->db->mutex) ); - sqlite3VdbeMemSetNull(pOut); + sqlite3VdbeMemRelease(pOut); + pOut->flags = MEM_Null; sqlite3VdbeMemSetPointer(pOut, pPtr, zPType, xDestructor); } void sqlite3_result_subtype(sqlite3_context *pCtx, unsigned int eSubtype){