Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(126)

Side by Side Diff: third_party/sqlite/sqlite-src-3170000/test/corrupt6.test

Issue 2747283002: [sql] Import reference version of SQLite 3.17.. (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 # 2008 May 6
2 #
3 # The author disclaims copyright to this source code. In place of
4 # a legal notice, here is a blessing:
5 #
6 # May you do good and not evil.
7 # May you find forgiveness for yourself and forgive others.
8 # May you share freely, never taking more than you give.
9 #
10 #***********************************************************************
11 # This file implements regression tests for SQLite library.
12 #
13 # This file implements tests to make sure SQLite does not crash or
14 # segfault if it sees a corrupt database file. It specifically focuses
15 # on corrupt SerialTypeLen values.
16 #
17 # $Id: corrupt6.test,v 1.2 2008/05/19 15:37:10 shane Exp $
18
19 set testdir [file dirname $argv0]
20 source $testdir/tester.tcl
21
22 # This module uses hard-coded offsets which do not work if the reserved_bytes
23 # value is nonzero.
24 if {[nonzero_reserved_bytes]} {finish_test; return;}
25
26 # These tests deal with corrupt database files
27 #
28 database_may_be_corrupt
29
30 # We must have the page_size pragma for these tests to work.
31 #
32 ifcapable !pager_pragmas {
33 finish_test
34 return
35 }
36
37 # Create a simple, small database.
38 #
39 do_test corrupt6-1.1 {
40 execsql {
41 PRAGMA auto_vacuum=OFF;
42 PRAGMA page_size=1024;
43 CREATE TABLE t1(x);
44 INSERT INTO t1(x) VALUES('varint32-01234567890123456789012345678901234567890 123456789');
45 INSERT INTO t1(x) VALUES('varint32-01234567890123456789012345678901234567890 123456789');
46 }
47 file size test.db
48 } [expr {1024*2}]
49
50 # Verify that the file format is as we expect. The page size
51 # should be 1024 bytes.
52 #
53 do_test corrupt6-1.2 {
54 hexio_get_int [hexio_read test.db 16 2]
55 } 1024 ;# The page size is 1024
56 do_test corrupt6-1.3 {
57 hexio_get_int [hexio_read test.db 20 1]
58 } 0 ;# Unused bytes per page is 0
59
60 integrity_check corrupt6-1.4
61
62 # Verify SerialTypeLen for first field of two records as we expect.
63 # SerialTypeLen = (len*2+12) = 60*2+12 = 132
64 do_test corrupt6-1.5.1 {
65 hexio_read test.db 1923 2
66 } 8103 ;# First text field size is 81 03 == 131
67 do_test corrupt6-1.5.2 {
68 hexio_read test.db 1987 2
69 } 8103 ;# Second text field size is 81 03 == 131
70
71 # Verify simple query results as expected.
72 do_test corrupt6-1.6 {
73 db close
74 sqlite3 db test.db
75 catchsql {
76 SELECT substr(x,1,8) FROM t1
77 }
78 } [list 0 {varint32 varint32} ]
79 integrity_check corrupt6-1.7
80
81 # Adjust value of record 1 / field 1 SerialTypeLen and see if the
82 # corruption is detected.
83 # Increase SerialTypeLen by 2.
84 do_test corrupt6-1.8.1 {
85 db close
86 hexio_write test.db 1923 8105
87 sqlite3 db test.db
88 catchsql {
89 SELECT substr(x,1,8) FROM t1
90 }
91 } [list 1 {database disk image is malformed}]
92
93 # Adjust value of record 1 / field 1 SerialTypeLen and see if the
94 # corruption is detected.
95 # Decrease SerialTypeLen by 2.
96 do_test corrupt6-1.8.2 {
97 db close
98 hexio_write test.db 1923 8101
99 sqlite3 db test.db
100 catchsql {
101 SELECT substr(x,1,8) FROM t1
102 }
103 } [list 1 {database disk image is malformed}]
104
105 # Put value of record 1 / field 1 SerialTypeLen back.
106 do_test corrupt6-1.8.3 {
107 db close
108 hexio_write test.db 1923 8103
109 sqlite3 db test.db
110 catchsql {
111 SELECT substr(x,1,8) FROM t1
112 }
113 } [list 0 {varint32 varint32} ]
114 integrity_check corrupt6-1.8.4
115
116 # Adjust value of record 2 / field 1 SerialTypeLen and see if the
117 # corruption is detected.
118 # Increase SerialTypeLen by 2.
119 do_test corrupt6-1.9.1 {
120 db close
121 hexio_write test.db 1987 8105
122 sqlite3 db test.db
123 catchsql {
124 SELECT substr(x,1,8) FROM t1
125 }
126 } [list 1 {database disk image is malformed}]
127
128 # Adjust value of record 2 / field 2 SerialTypeLen and see if the
129 # corruption is detected.
130 # Decrease SerialTypeLen by 2.
131 do_test corrupt6-1.9.2 {
132 db close
133 hexio_write test.db 1987 8101
134 sqlite3 db test.db
135 catchsql {
136 SELECT substr(x,1,8) FROM t1
137 }
138 } [list 1 {database disk image is malformed}]
139
140 # Put value of record 1 / field 2 SerialTypeLen back.
141 do_test corrupt6-1.9.3 {
142 db close
143 hexio_write test.db 1987 8103
144 sqlite3 db test.db
145 catchsql {
146 SELECT substr(x,1,8) FROM t1
147 }
148 } [list 0 {varint32 varint32} ]
149 integrity_check corrupt6-1.9.4
150
151 # Adjust value of record 1 / field 1 SerialTypeLen and see if the
152 # corruption is detected.
153 # Set SerialTypeLen to FF 7F (2 bytes)
154 do_test corrupt6-1.10.1 {
155 db close
156 hexio_write test.db 1923 FF7F
157 sqlite3 db test.db
158 catchsql {
159 SELECT substr(x,1,8) FROM t1
160 }
161 } [list 1 {database disk image is malformed}]
162
163 # Adjust value of record 1 / field 1 SerialTypeLen and see if the
164 # corruption is detected.
165 # Set SerialTypeLen to FF FF 7F (3 bytes)
166 do_test corrupt6-1.10.2 {
167 db close
168 hexio_write test.db 1923 FFFF7F
169 sqlite3 db test.db
170 catchsql {
171 SELECT substr(x,1,8) FROM t1
172 }
173 } [list 1 {database disk image is malformed}]
174
175 # Adjust value of record 1 / field 1 SerialTypeLen and see if the
176 # corruption is detected.
177 # Set SerialTypeLen to FF FF FF 7F (4 bytes)
178 do_test corrupt6-1.10.3 {
179 db close
180 hexio_write test.db 1923 FFFFFF7F
181 sqlite3 db test.db
182 catchsql {
183 SELECT substr(x,1,8) FROM t1
184 }
185 } [list 1 {database disk image is malformed}]
186
187 # Adjust value of record 1 / field 1 SerialTypeLen and see if the
188 # corruption is detected.
189 # Set SerialTypeLen to FF FF FF FF 7F (5 bytes)
190 do_test corrupt6-1.10.4 {
191 db close
192 hexio_write test.db 1923 FFFFFFFF7F
193 sqlite3 db test.db
194 catchsql {
195 SELECT substr(x,1,8) FROM t1
196 }
197 } [list 1 {database disk image is malformed}]
198
199 # Adjust value of record 1 / field 1 SerialTypeLen and see if the
200 # corruption is detected.
201 # Set SerialTypeLen to FF FF FF FF FF 7F (6 bytes, and overflows).
202 do_test corrupt6-1.10.5 {
203 db close
204 hexio_write test.db 1923 FFFFFFFFFF7F
205 sqlite3 db test.db
206 catchsql {
207 SELECT substr(x,1,8) FROM t1
208 }
209 } [list 1 {database disk image is malformed}]
210
211 # Adjust value of record 1 / field 1 SerialTypeLen and see if the
212 # corruption is detected.
213 # Set SerialTypeLen to FF FF FF FF FF FF 7F (7 bytes, and overflows).
214 do_test corrupt6-1.10.6 {
215 db close
216 hexio_write test.db 1923 FFFFFFFFFFFF7F
217 sqlite3 db test.db
218 catchsql {
219 SELECT substr(x,1,8) FROM t1
220 }
221 } [list 1 {database disk image is malformed}]
222
223 # Adjust value of record 1 / field 1 SerialTypeLen and see if the
224 # corruption is detected.
225 # Set SerialTypeLen to FF FF FF FF FF FF FF 7F (8 bytes, and overflows).
226 do_test corrupt6-1.10.7 {
227 db close
228 hexio_write test.db 1923 FFFFFFFFFFFFFF7F
229 sqlite3 db test.db
230 catchsql {
231 SELECT substr(x,1,8) FROM t1
232 }
233 } [list 1 {database disk image is malformed}]
234
235 # Adjust value of record 1 / field 1 SerialTypeLen and see if the
236 # corruption is detected.
237 # Set SerialTypeLen to FF FF FF FF FF FF FF FF 7F (9 bytes, and overflows).
238 do_test corrupt6-1.10.8 {
239 db close
240 hexio_write test.db 1923 FFFFFFFFFFFFFFFF7F
241 sqlite3 db test.db
242 catchsql {
243 SELECT substr(x,1,8) FROM t1
244 }
245 } [list 1 {database disk image is malformed}]
246
247 # Adjust value of record 1 / field 1 SerialTypeLen and see if the
248 # corruption is detected.
249 # Set SerialTypeLen to FFFF FF FF FF FF FF FF FF 7F (10 bytes, and overflows).
250 do_test corrupt6-1.10.9 {
251 db close
252 hexio_write test.db 1923 FFFFFFFFFFFFFFFFFF7F
253 sqlite3 db test.db
254 catchsql {
255 SELECT substr(x,1,8) FROM t1
256 }
257 } [list 1 {database disk image is malformed}]
258
259 finish_test
OLDNEW
« no previous file with comments | « third_party/sqlite/sqlite-src-3170000/test/corrupt5.test ('k') | third_party/sqlite/sqlite-src-3170000/test/corrupt7.test » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698