Index: third_party/sqlite/src/test/corruptC.test |
diff --git a/third_party/sqlite/src/test/corruptC.test b/third_party/sqlite/src/test/corruptC.test |
index 05804263884a661648fb2208ca3b6e7dea1c3bc0..adf6f44c44863de6deda63d665ff120b693a25e5 100644 |
--- a/third_party/sqlite/src/test/corruptC.test |
+++ b/third_party/sqlite/src/test/corruptC.test |
@@ -17,7 +17,7 @@ |
# |
# $Id: corruptC.test,v 1.14 2009/07/11 06:55:34 danielk1977 Exp $ |
-catch {file delete -force test.db test.db-journal test.bu} |
+catch {forcedelete test.db test.db-journal test.bu} |
set testdir [file dirname $argv0] |
source $testdir/tester.tcl |
@@ -27,6 +27,10 @@ source $testdir/tester.tcl |
# |
do_not_use_codec |
+# These tests deal with corrupt database files |
+# |
+database_may_be_corrupt |
+ |
# Construct a compact, dense database for testing. |
# |
do_test corruptC-1.1 { |
@@ -58,16 +62,10 @@ proc random {range} { |
return [expr {round(rand()*$range)}] |
} |
-# Copy file $from into $to |
-# |
-proc copy_file {from to} { |
- file copy -force $from $to |
-} |
- |
# Setup for the tests. Make a backup copy of the good database in test.bu. |
# |
db close |
-copy_file test.db test.bu |
+forcecopy test.db test.bu |
sqlite3 db test.db |
set fsize [file size test.db] |
@@ -92,7 +90,7 @@ expr srand($qseed) |
# test that a corrupt content offset size is handled (seed 5577) |
do_test corruptC-2.1 { |
db close |
- copy_file test.bu test.db |
+ forcecopy test.bu test.db |
# insert corrupt byte(s) |
hexio_write test.db 2053 [format %02x 0x04] |
@@ -104,7 +102,7 @@ do_test corruptC-2.1 { |
# test that a corrupt content offset size is handled (seed 5649) |
do_test corruptC-2.2 { |
db close |
- copy_file test.bu test.db |
+ forcecopy test.bu test.db |
# insert corrupt byte(s) |
hexio_write test.db 27 [format %02x 0x08] |
@@ -125,7 +123,7 @@ do_test corruptC-2.2 { |
# test that a corrupt free cell size is handled (seed 13329) |
do_test corruptC-2.3 { |
db close |
- copy_file test.bu test.db |
+ forcecopy test.bu test.db |
# insert corrupt byte(s) |
hexio_write test.db 1094 [format %02x 0x76] |
@@ -137,7 +135,7 @@ do_test corruptC-2.3 { |
# test that a corrupt free cell size is handled (seed 169571) |
do_test corruptC-2.4 { |
db close |
- copy_file test.bu test.db |
+ forcecopy test.bu test.db |
# insert corrupt byte(s) |
hexio_write test.db 3119 [format %02x 0xdf] |
@@ -149,7 +147,7 @@ do_test corruptC-2.4 { |
# test that a corrupt free cell size is handled (seed 169571) |
do_test corruptC-2.5 { |
db close |
- copy_file test.bu test.db |
+ forcecopy test.bu test.db |
# insert corrupt byte(s) |
hexio_write test.db 3119 [format %02x 0xdf] |
@@ -169,7 +167,7 @@ Page 4: btreeInitPage() returns error code 11}}} |
# test that a corrupt free cell size is handled (seed 169595) |
do_test corruptC-2.6 { |
db close |
- copy_file test.bu test.db |
+ forcecopy test.bu test.db |
# insert corrupt byte(s) |
hexio_write test.db 619 [format %02x 0xe2] |
@@ -182,7 +180,7 @@ do_test corruptC-2.6 { |
# corruption (seed 178692) |
do_test corruptC-2.7 { |
db close |
- copy_file test.bu test.db |
+ forcecopy test.bu test.db |
# insert corrupt byte(s) |
hexio_write test.db 3074 [format %02x 0xa0] |
@@ -194,7 +192,7 @@ do_test corruptC-2.7 { |
# corruption (seed 179069) |
do_test corruptC-2.8 { |
db close |
- copy_file test.bu test.db |
+ forcecopy test.bu test.db |
# insert corrupt byte(s) |
hexio_write test.db 1393 [format %02x 0x7d] |
@@ -208,21 +206,25 @@ do_test corruptC-2.8 { |
} {1 {database disk image is malformed}} |
# corruption (seed 170434) |
+# |
+# UPDATE: Prior to 3.8.2, this used to return SQLITE_CORRUPT. It no longer |
+# does. That is Ok, the point of these tests is to verify that no buffer |
+# overruns or overreads can be caused by corrupt databases. |
do_test corruptC-2.9 { |
db close |
- copy_file test.bu test.db |
+ forcecopy test.bu test.db |
# insert corrupt byte(s) |
hexio_write test.db 2095 [format %02x 0xd6] |
sqlite3 db test.db |
catchsql {BEGIN; DELETE FROM t1 WHERE x>13; ROLLBACK;} |
-} {1 {database disk image is malformed}} |
+} {0 {}} |
# corruption (seed 186504) |
do_test corruptC-2.10 { |
db close |
- copy_file test.bu test.db |
+ forcecopy test.bu test.db |
# insert corrupt byte(s) |
hexio_write test.db 3130 [format %02x 0x02] |
@@ -234,7 +236,7 @@ do_test corruptC-2.10 { |
# corruption (seed 1589) |
do_test corruptC-2.11 { |
db close |
- copy_file test.bu test.db |
+ forcecopy test.bu test.db |
# insert corrupt byte(s) |
hexio_write test.db 55 [format %02x 0xa7] |
@@ -246,7 +248,7 @@ do_test corruptC-2.11 { |
# corruption (seed 14166) |
do_test corruptC-2.12 { |
db close |
- copy_file test.bu test.db |
+ forcecopy test.bu test.db |
# insert corrupt byte(s) |
hexio_write test.db 974 [format %02x 0x2e] |
@@ -258,7 +260,7 @@ do_test corruptC-2.12 { |
# corruption (seed 218803) |
do_test corruptC-2.13 { |
db close |
- copy_file test.bu test.db |
+ forcecopy test.bu test.db |
# insert corrupt byte(s) |
hexio_write test.db 102 [format %02x 0x12] |
@@ -269,7 +271,7 @@ do_test corruptC-2.13 { |
do_test corruptC-2.14 { |
db close |
- copy_file test.bu test.db |
+ forcecopy test.bu test.db |
sqlite3 db test.db |
set blob [string repeat abcdefghij 10000] |
@@ -286,7 +288,7 @@ do_test corruptC-2.14 { |
# |
do_test corruptC-2.15 { |
db close |
- copy_file test.bu test.db |
+ forcecopy test.bu test.db |
hexio_write test.db 986 b9 |
sqlite3 db test.db |
catchsql {SELECT count(*) FROM sqlite_master;} |
@@ -300,7 +302,7 @@ for {set tn 0} {$tn<$fsize} {incr tn 1} { |
# setup for test |
db close |
- copy_file test.bu test.db |
+ forcecopy test.bu test.db |
sqlite3 db test.db |
# Seek to a random location in the file, and write a random single byte |