]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a use-after-free error in ioerr.test caused by an error in test code.
authordan <Dan Kennedy>
Wed, 14 Jul 2021 21:18:31 +0000 (21:18 +0000)
committerdan <Dan Kennedy>
Wed, 14 Jul 2021 21:18:31 +0000 (21:18 +0000)
FossilOrigin-Name: 1594056aab068b9fae82f6b885828c7127d9bedcc37c4340486e32791bc87c7a

manifest
manifest.uuid
test/tester.tcl

index 218b1abbf1dbe9056f297a3a53c0a7683ee5d5a6..8d6d4c6f240f81b42504a6230c2edf1340cf017d 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Enhance\scomments\spertaining\sto\sthe\sinterface\slinkage\s/\scalling\sconvention\smacros.
-D 2021-07-13T22:49:02.204
+C Fix\sa\suse-after-free\serror\sin\sioerr.test\scaused\sby\san\serror\sin\stest\scode.
+D 2021-07-14T21:18:31.520
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -1454,7 +1454,7 @@ F test/temptable.test d2c9b87a54147161bcd1822e30c1d1cd891e5b30
 F test/temptable2.test d2940417496e2b9548e01d09990763fbe88c316504033256d51493e1f1a5ce6a
 F test/temptable3.test d11a0974e52b347e45ee54ef1923c91ed91e4637
 F test/temptrigger.test 38f0ca479b1822d3117069e014daabcaacefffcc
-F test/tester.tcl 19d2a19a6dd55a2b4e2b943963959a05a2c088495dd5f5274b04e0494ce86d66
+F test/tester.tcl 0b7957eb669371250008a5e1fef5902257905fd6d560e8834be1ac4a0620063a
 F test/thread001.test b61a29dd87cf669f5f6ac96124a7c97d71b0c80d9012746072055877055cf9ef
 F test/thread002.test e630504f8a06c00bf8bbe68528774dd96aeb2e58
 F test/thread003.test ee4c9efc3b86a6a2767516a37bd64251272560a7
@@ -1920,7 +1920,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 9a84321229ad499ee0f7c85732c2728afb4476c72073a510401a559dda9be38f
-R 3789b43d6e6200974e3100b41a3c444f
-U mistachkin
-Z eb61d76fb75de1f468d1b3d6692793bb
+P c378e99250fe06fae8ca40c62185b607f004d6806e07dbb9f964dd849b4e55f8
+R 5dc9e7510bb681a9844c30d96bdfacf1
+U dan
+Z ab55d4571a2b3927d12f63db9cd8ac86
index f6b958ea4097d23d6d7afab58592fe5669750024..ca45e839898b0422bafdb567370ef5fc224c37d3 100644 (file)
@@ -1 +1 @@
-c378e99250fe06fae8ca40c62185b607f004d6806e07dbb9f964dd849b4e55f8
\ No newline at end of file
+1594056aab068b9fae82f6b885828c7127d9bedcc37c4340486e32791bc87c7a
\ No newline at end of file
index 304808b6bcc16c7d845c93217eeb68d48fb71ce6..d7dc21157af9eced062b850c9e9b49da2dd45899 100644 (file)
@@ -1904,21 +1904,23 @@ proc do_ioerr_test {testname args} {
       set ::sqlite_io_error_hardhit 0
       set r [catch $::ioerrorbody msg]
       set ::errseen $r
-      set rc [sqlite3_errcode $::DB]
-      if {$::ioerropts(-erc)} {
-        # If we are in extended result code mode, make sure all of the
-        # IOERRs we get back really do have their extended code values.
-        # If an extended result code is returned, the sqlite3_errcode
-        # TCLcommand will return a string of the form:  SQLITE_IOERR+nnnn
-        # where nnnn is a number
-        if {[regexp {^SQLITE_IOERR} $rc] && ![regexp {IOERR\+\d} $rc]} {
-          return $rc
-        }
-      } else {
-        # If we are not in extended result code mode, make sure no
-        # extended error codes are returned.
-        if {[regexp {\+\d} $rc]} {
-          return $rc
+      if {[info commands db]!=""} {
+        set rc [sqlite3_errcode db]
+        if {$::ioerropts(-erc)} {
+          # If we are in extended result code mode, make sure all of the
+          # IOERRs we get back really do have their extended code values.
+          # If an extended result code is returned, the sqlite3_errcode
+          # TCLcommand will return a string of the form:  SQLITE_IOERR+nnnn
+          # where nnnn is a number
+          if {[regexp {^SQLITE_IOERR} $rc] && ![regexp {IOERR\+\d} $rc]} {
+            return $rc
+          }
+        } else {
+          # If we are not in extended result code mode, make sure no
+          # extended error codes are returned.
+          if {[regexp {\+\d} $rc]} {
+            return $rc
+          }
         }
       }
       # The test repeats as long as $::go is non-zero.  $::go starts out