Smaller and faster PRAGMA integrity_check that also does a better job of
detecting errors. Some output text describing discovered file corruption has changed for clarity. FossilOrigin-Name: 251a7590ff4f65f59a1c871892533e4e2c544515
This commit is contained in:
+14
-35
@@ -65,41 +65,20 @@ integrity_check corrupt7-1.4
|
||||
|
||||
# Deliberately corrupt some of the cell offsets in the btree page
|
||||
# on page 2 of the database.
|
||||
#
|
||||
# The error message is different depending on whether or not the
|
||||
# SQLITE_ENABLE_OVERSIZE_CELL_CHECK compile-time option is engaged.
|
||||
#
|
||||
ifcapable oversize_cell_check {
|
||||
do_test corrupt7-2.1 {
|
||||
db close
|
||||
hexio_write test.db 1062 FF
|
||||
sqlite3 db test.db
|
||||
db eval {PRAGMA integrity_check(1)}
|
||||
} {{*** in database main ***
|
||||
Page 2: btreeInitPage() returns error code 11}}
|
||||
do_test corrupt7-2.2 {
|
||||
db close
|
||||
hexio_write test.db 1062 04
|
||||
sqlite3 db test.db
|
||||
db eval {PRAGMA integrity_check(1)}
|
||||
} {{*** in database main ***
|
||||
Page 2: btreeInitPage() returns error code 11}}
|
||||
} else {
|
||||
do_test corrupt7-2.1 {
|
||||
db close
|
||||
hexio_write test.db 1062 FF
|
||||
sqlite3 db test.db
|
||||
db eval {PRAGMA integrity_check(1)}
|
||||
} {{*** in database main ***
|
||||
Corruption detected in cell 15 on page 2}}
|
||||
do_test corrupt7-2.2 {
|
||||
db close
|
||||
hexio_write test.db 1062 04
|
||||
sqlite3 db test.db
|
||||
db eval {PRAGMA integrity_check(1)}
|
||||
} {{*** in database main ***
|
||||
On tree page 2 cell 15: Rowid 0 out of order (previous was 15)}}
|
||||
}
|
||||
do_test corrupt7-2.1 {
|
||||
db close
|
||||
hexio_write test.db 1062 FF
|
||||
sqlite3 db test.db
|
||||
db eval {PRAGMA integrity_check(1)}
|
||||
} {{*** in database main ***
|
||||
On tree page 2 cell 15: Offset 65457 out of range 945..1020}}
|
||||
do_test corrupt7-2.2 {
|
||||
db close
|
||||
hexio_write test.db 1062 04
|
||||
sqlite3 db test.db
|
||||
db eval {PRAGMA integrity_check(1)}
|
||||
} {{*** in database main ***
|
||||
On tree page 2 cell 15: Offset 1201 out of range 945..1020}}
|
||||
|
||||
# The code path that was causing the buffer overrun that this test
|
||||
# case was checking for was removed.
|
||||
|
||||
Reference in New Issue
Block a user