blob: 2a430de12e954328f6a0d7187f64301da0f12a67 [file] [log] [blame]
drhf7e74902018-12-13 20:49:43 +00001# 2012-12-13
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#
12# Test cases for corrupt database files.
13
14set testdir [file dirname $argv0]
15source $testdir/tester.tcl
16
17ifcapable !deserialize {
18 finish_test
19 return
20}
drh6301c432018-12-13 21:52:18 +000021database_may_be_corrupt
drhf7e74902018-12-13 20:49:43 +000022
drh1641f112018-12-13 21:05:45 +000023# In the following database file, there is 384 bytes of free space
24# on page 8 that does not appear on the freeblock list.
25#
drhf7e74902018-12-13 20:49:43 +000026do_test dbfuzz001-100 {
27 sqlite3 db {}
28 db deserialize [decode_hexdb {
29 | size 5632 pagesize 512 filename c4.db
30 | page 1 offset 0
31 | 0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00 SQLite format 3.
32 | 16: 02 00 01 01 00 40 20 20 00 00 00 02 00 00 00 0b .....@ ........
33 | 32: 00 00 00 06 00 00 00 01 00 00 00 28 00 00 00 04 ...........(....
34 | 48: 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 ................
35 | 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 ................
36 | 96: 00 2e 30 38 0d 00 00 00 06 01 06 00 01 da 01 b0 ..08............
37 | 112: 01 56 01 86 01 2a 01 06 00 00 00 00 00 00 00 00 .V...*..........
38 | 256: 00 00 00 00 00 00 22 07 06 17 11 11 01 31 74 61 ......"......1ta
39 | 272: 62 6c 65 74 34 74 34 07 43 52 45 41 54 45 20 54 blet4t4.CREATE T
40 | 288: 41 42 4c 45 20 74 34 28 78 29 2a 06 06 17 13 11 ABLE t4(x)*.....
41 | 304: 01 3f 69 6e 64 65 78 00 00 00 00 00 00 00 00 00 .?index.........
42 | 336: 20 74 33 28 78 29 2e 04 06 17 15 11 01 45 69 6e t3(x).......Ein
43 | 352: 64 65 78 74 32 63 64 74 32 05 43 52 45 41 54 45 dext2cdt2.CREATE
44 | 368: 20 49 4e 44 45 58 20 74 32 63 64 20 4f 4e 20 74 INDEX t2cd ON t
45 | 384: 32 28 63 2c 64 29 28 05 06 17 11 11 01 3d 74 61 2(c,d)(......=ta
46 | 400: 62 6c 65 74 33 74 33 04 43 52 45 41 54 45 20 54 blet3t3.CREATE T
47 | 416: 41 42 4c 45 20 74 33 28 63 2c 78 2c 65 2c 66 29 ABLE t3(c,x,e,f)
48 | 432: 28 02 06 17 11 11 01 3d 74 61 62 6c 65 74 32 74 (......=tablet2t
49 | 448: 32 03 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 2.CREATE TABLE t
50 | 464: 32 28 63 2c 64 2c 65 2c 66 29 24 01 06 17 11 11 2(c,d,e,f)$.....
51 | 480: 01 35 74 61 62 6c 65 74 31 74 31 02 43 52 45 41 .5tablet1t1.CREA
52 | 496: 54 45 20 54 41 42 4c 45 20 74 31 28 61 2c 62 29 TE TABLE t1(a,b)
53 | page 2 offset 512
54 | 0: 0d 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 ................
55 | page 3 offset 1024
56 | 0: 0d 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 ................
57 | page 4 offset 1536
58 | 0: 05 00 00 00 03 01 f1 00 00 00 00 0b 01 fb 01 f6 ................
59 | 16: 01 f1 00 16 00 00 09 06 05 01 01 01 01 04 04 03 ................
60 | 32: 03 07 05 05 01 01 09 09 02 02 19 04 05 17 17 17 ................
61 | 48: 17 73 65 76 65 6e 65 69 67 68 74 65 69 67 68 74 .seveneighteight
62 | 64: 73 65 76 65 6e 25 03 05 07 07 07 07 40 14 00 00 seven%......@...
63 | 80: 00 00 00 00 40 18 00 00 00 00 00 00 40 18 00 00 ....@.......@...
64 | 96: 00 00 00 00 40 14 00 00 00 00 00 00 09 02 05 01 ....@...........
65 | 112: 01 01 01 03 04 04 03 07 01 05 09 01 01 09 02 02 ................
66 | 352: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1a ................
67 | 496: 00 00 00 00 0a 3e 00 00 00 09 21 00 00 00 08 06 .....>....!.....
68 | page 5 offset 2048
69 | 0: 0a 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 ................
70 | page 7 offset 3072
71 | 0: 0d 00 00 00 08 01 c2 00 01 fb 01 f6 01 f1 01 ec ................
72 | 16: 01 e0 01 d4 01 cb 01 c2 00 00 00 00 00 00 00 00 ................
73 | 96: 00 00 00 00 13 00 00 00 00 00 00 00 00 00 00 00 ................
74 | 224: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 ................
75 | 288: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 ................
76 | 448: 00 00 07 08 02 17 65 69 67 68 74 07 07 02 17 65 ......eight....e
77 | 464: 69 67 68 74 0a 06 02 07 40 18 00 00 00 00 00 00 ight....@.......
78 | 480: 0a 05 02 07 40 18 00 00 00 00 00 00 03 04 02 01 ....@...........
79 | 496: 04 03 03 02 01 04 03 02 02 01 02 03 01 02 01 02 ................
80 | page 8 offset 3584
81 | 0: 0d 00 21 00 01 00 16 00 00 16 00 16 00 16 00 16 ..!.............
82 | 16: 00 16 00 16 00 00 09 06 05 01 01 01 01 04 04 03 ................
83 | 32: 03 00 00 00 5f 01 09 09 02 02 00 00 00 56 17 17 ...._........V..
84 | 48: 17 73 65 76 65 6e 65 69 67 68 74 65 69 67 68 74 .seveneighteight
85 | 64: 73 65 76 65 6e 00 00 00 3b 07 07 07 40 14 00 00 seven...;...@...
86 | 80: 00 00 00 00 40 18 00 00 00 00 00 00 40 18 00 00 ....@.......@...
87 | 96: 00 00 00 00 40 14 00 00 00 00 00 00 00 00 00 14 ....@...........
88 | 112: 01 01 01 03 04 04 03 00 00 00 09 01 01 09 02 02 ................
89 | 352: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1a ................
90 | page 9 offset 4096
91 | 0: 0d 00 00 00 1b 00 47 00 01 d9 01 be 01 af 01 a0 ......G.........
92 | 16: 01 91 01 82 01 73 01 64 01 55 01 46 01 37 01 28 .....s.d.U.F.7.(
93 | 32: 01 19 01 0a 00 fb 00 ec 00 dd 00 ce 00 bf 00 b0 ................
94 | 48: 00 a1 00 92 00 83 00 74 00 65 00 56 00 47 00 00 .......t.e.V.G..
95 | 64: 00 00 00 00 00 00 00 0d 21 00 00 48 01 54 00 01 ........!..H.T..
96 | 80: f7 01 ec 01 c5 01 0d 20 00 00 48 01 54 00 01 f7 ....... ..H.T...
97 | 96: 01 ec 01 c5 01 0d 1f 00 00 48 01 54 00 01 f7 01 .........H.T....
98 | 112: ec 01 c5 01 0d 1e 00 00 48 01 54 00 01 f7 01 ec ........H.T.....
99 | 128: 01 c5 01 0d 1d 00 00 48 01 54 00 01 f7 01 ec 01 .......H.T......
100 | 144: c5 01 0d 1c 00 00 48 01 54 00 01 f7 01 ec 01 c5 ......H.T.......
101 | 160: 01 0d 1b 00 00 48 01 54 00 01 f7 01 ec 01 c5 01 .....H.T........
102 | 176: 0d 1a 00 00 48 01 54 00 01 f7 01 ec 01 c5 01 0d ....H.T.........
103 | 192: 19 00 00 48 01 54 00 01 f7 01 ec 01 c5 01 0d 18 ...H.T..........
104 | 208: 00 00 48 01 54 00 01 f7 01 ec 01 c5 01 0d 17 00 ..H.T...........
105 | 224: 00 48 01 54 00 01 f7 01 ec 01 c5 01 0d 16 00 00 .H.T............
106 | 240: 48 01 54 00 01 f7 01 ec 01 c5 01 0d 15 00 00 48 H.T............H
107 | 256: 01 54 00 01 f7 01 ec 01 c5 01 0d 14 00 00 48 01 .T............H.
108 | 272: 54 00 01 f7 01 ec 01 c5 01 0d 13 00 00 48 01 54 T............H.T
109 | 288: 00 01 f7 01 ec 01 c5 01 0d 12 00 00 48 01 54 00 ............H.T.
110 | 304: 01 f7 01 ec 01 c5 01 0d 11 00 00 48 01 54 00 01 ...........H.T..
111 | 320: f7 01 ec 01 c5 01 0d 10 00 00 48 01 54 00 01 f7 ..........H.T...
112 | 336: 01 ec 01 c5 01 0d 0f 00 00 48 01 54 00 01 f7 01 .........H.T....
113 | 352: ec 01 c5 01 0d 0e 00 00 48 01 54 00 01 f7 01 ec ........H.T.....
114 | 368: 01 c5 01 0d 0d 00 00 48 01 54 00 01 f7 01 ec 01 .......H.T......
115 | 384: c5 01 0d 0c 00 00 48 01 54 00 01 f7 01 ec 01 c5 ......H.T.......
116 | 400: 01 0d 0b 00 00 48 01 54 00 01 f7 01 ec 01 c5 01 .....H.T........
117 | 416: 0d 0a 00 00 48 01 54 00 01 f7 01 ec 01 c5 01 0d ....H.T.........
118 | 432: 09 00 00 48 01 54 00 01 f7 01 ec 01 c5 01 19 08 ...H.T..........
119 | 448: 05 17 17 17 17 65 69 67 68 74 65 69 67 68 74 73 .....eighteights
120 | 464: 65 76 65 6e 73 65 76 65 6e 25 07 05 07 07 07 07 evenseven%......
121 | 480: 40 18 00 00 00 00 00 00 40 18 00 00 00 00 00 00 @.......@.......
122 | 496: 40 14 00 00 00 00 00 00 40 14 00 00 00 00 00 00 @.......@.......
123 | page 10 offset 4608
124 | 0: 0d 00 00 00 1d 00 4d 00 01 f1 01 e2 01 d3 01 c4 ......M.........
125 | 16: 01 b5 01 a6 01 97 01 88 01 79 01 6a 01 5b 01 4c .........y.j.[.L
126 | 32: 01 3d 01 2e 01 1f 01 10 01 01 00 f2 00 e3 00 d4 .=..............
127 | 48: 00 c5 00 b6 00 a7 00 98 00 89 00 7a 00 6b 00 5c ...........z.k.\
128 | 64: 00 4d 00 00 00 00 00 00 00 00 00 00 00 0d 3e 00 .M............>.
129 | 80: 00 48 01 54 00 01 f7 01 ec 01 c5 01 0d 3d 00 00 .H.T.........=..
130 | 96: 48 01 54 00 01 f7 01 ec 01 c5 01 0d 3c 00 00 48 H.T.........<..H
131 | 112: 01 54 00 01 f7 01 ec 01 c5 01 0d 3b 00 00 48 01 .T.........;..H.
132 | 128: 54 00 01 f7 01 ec 01 c5 01 0d 3a 00 00 48 01 54 T.........:..H.T
133 | 144: 00 01 f7 01 ec 01 c5 01 0d 39 00 00 48 01 54 00 .........9..H.T.
134 | 160: 01 f7 01 ec 01 c5 01 0d 38 00 00 48 01 54 00 01 ........8..H.T..
135 | 176: f7 01 ec 01 c5 01 0d 37 00 00 48 01 54 00 01 f7 .......7..H.T...
136 | 192: 01 ec 01 c5 01 0d 36 00 00 48 01 54 00 01 f7 01 ......6..H.T....
137 | 208: ec 01 c5 01 0d 35 00 00 48 01 54 00 01 f7 01 ec .....5..H.T.....
138 | 224: 01 c5 01 0d 34 00 00 48 01 54 00 01 f7 01 ec 01 ....4..H.T......
139 | 240: c5 01 0d 33 00 00 48 01 54 00 01 f7 01 ec 01 c5 ...3..H.T.......
140 | 256: 01 0d 32 00 00 48 01 54 00 01 f7 01 ec 01 c5 01 ..2..H.T........
141 | 272: 0d 31 00 00 48 01 54 00 01 f7 01 ec 01 c5 01 0d .1..H.T.........
142 | 288: 30 00 00 48 01 54 00 01 f7 01 ec 01 c5 01 0d 2f 0..H.T........./
143 | 304: 00 00 48 01 54 00 01 f7 01 ec 01 c5 01 0d 2e 00 ..H.T...........
144 | 320: 00 48 01 54 00 01 f7 01 ec 01 c5 01 0d 2d 00 00 .H.T.........-..
145 | 336: 48 01 54 00 01 f7 01 ec 01 c5 01 0d 2c 00 00 48 H.T.........,..H
146 | 352: 01 54 00 01 f7 01 ec 01 c5 01 0d 2b 00 00 48 01 .T.........+..H.
147 | 368: 54 00 01 f7 01 ec 01 c5 01 0d 2a 00 00 48 01 54 T.........*..H.T
148 | 384: 00 01 f7 01 ec 01 c5 01 0d 29 00 00 48 01 54 00 .........)..H.T.
149 | 400: 01 f7 01 ec 01 c5 01 0d 28 00 00 48 01 54 00 01 ........(..H.T..
150 | 416: f7 01 ec 01 c5 01 0d 27 00 00 48 01 54 00 01 f7 .......'..H.T...
151 | 432: 01 ec 01 c5 01 0d 26 00 00 48 01 54 00 01 f7 01 ......&..H.T....
152 | 448: ec 01 c5 01 0d 25 00 00 48 01 54 00 01 f7 01 ec .....%..H.T.....
153 | 464: 01 c5 01 0d 24 00 00 48 01 54 00 01 f7 01 ec 01 ....$..H.T......
154 | 480: c5 01 0d 23 00 00 48 01 54 00 01 f7 01 ec 01 c5 ...#..H.T.......
155 | 496: 01 0d 22 00 00 48 01 54 00 01 f7 01 ec 01 c5 01 .."..H.T........
156 | page 11 offset 5120
157 | 0: 0d 00 00 00 0a 01 6a 00 01 f1 01 e2 01 d3 01 c4 ......j.........
158 | 16: 01 b5 01 a6 01 97 01 88 01 79 01 6a 00 00 00 00 .........y.j....
159 | 352: 00 00 00 00 00 00 00 00 00 00 0d 48 00 00 48 01 ...........H..H.
160 | 368: 54 00 01 f7 01 ec 01 c5 01 0d 47 00 00 48 01 54 T.........G..H.T
161 | 384: 00 01 f7 01 ec 01 c5 01 0d 46 00 00 48 01 54 00 .........F..H.T.
162 | 400: 01 f7 01 ec 01 c5 01 0d 45 00 00 48 01 54 00 01 ........E..H.T..
163 | 416: f7 01 ec 01 c5 01 0d 44 00 00 48 01 54 00 01 f7 .......D..H.T...
164 | 432: 01 ec 01 c5 01 0d 43 00 00 48 01 54 00 01 f7 01 ......C..H.T....
165 | 448: ec 01 c5 01 0d 42 00 00 48 01 54 00 01 f7 01 ec .....B..H.T.....
166 | 464: 01 c5 01 0d 41 00 00 48 01 54 00 01 f7 01 ec 01 ....A..H.T......
167 | 480: c5 01 0d 40 00 00 48 01 54 00 01 f7 01 ec 01 c5 ...@..H.T.......
168 | 496: 01 0d 3f 00 00 48 01 54 00 01 f7 01 ec 01 c5 01 ..?..H.T........
169 | end c4.db
170 }]
dan6e08c4a2019-02-06 18:08:42 +0000171} {}
172
173ifcapable !oversize_cell_check {
174 # Non SQLITE_ENABLE_OVERSIZE_CELL_CHECK builds:
175 do_test dbfuzz001-101a {
176 db eval {PRAGMA writable_schema=on; PRAGMA integrity_check}
177 } {/Fragmentation of 384 bytes reported as 0 on page 8/}
178} else {
179 # SQLITE_ENABLE_OVERSIZE_CELL_CHECK builds:
180 do_catchsql_test dbfuzz001-101b {
181 PRAGMA writable_schema=on;
182 PRAGMA integrity_check;
183 } {1 {database disk image is malformed}}
184}
drhf7e74902018-12-13 20:49:43 +0000185
drh1641f112018-12-13 21:05:45 +0000186# The DELETE query below deletes the very last cell from page 8.
187# Prior to a certain fix to sqlite3BtreeDelete() and because of the
188# corruption to the freeblock list on page 8, this would fail to
189# cause a rebalance operation, which would leave the btree in a weird
190# state that would lead to segfaults and or assertion faults.
191#
dane2081dd2019-04-13 15:07:00 +0000192do_execsql_test dbfuzz001-110 {
drh1641f112018-12-13 21:05:45 +0000193 DELETE FROM t3 WHERE x IS NOT NULL AND +rowid=6;
dane2081dd2019-04-13 15:07:00 +0000194} {}
drh1641f112018-12-13 21:05:45 +0000195
drh6301c432018-12-13 21:52:18 +0000196# This is a dbfuzz2-generate test case that can cause a page with
197# pPage->nCell==0 to enter the balancer.
198#
199do_test dbfuzz001-200 {
200 db deserialize [decode_hexdb {
201 | size 3076 pagesize 512 filename c03.db
202 | page 1 offset 0
203 | 0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00 SQLite format 3.
204 | 16: 02 00 01 01 00 40 20 20 00 00 00 0c 00 00 00 07 .....@ ........
205 | 32: 00 00 00 00 00 00 00 00 00 00 00 08 00 00 00 04 ................
206 | 48: 00 00 00 00 00 00 00 03 e8 00 00 01 00 00 00 00 ................
207 | 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0c ................
208 | 96: 00 2e 2c 50 0d 00 00 00 06 01 06 00 01 da 01 b0 ..,P............
209 | 112: 01 56 01 86 01 2a 01 06 00 00 00 00 00 00 00 00 .V...*..........
210 | 128: 00 00 00 00 00 00 00 00 ef 00 00 00 00 00 00 00 ................
211 | 192: 00 7f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
212 | 224: 00 00 00 00 00 00 00 00 00 00 00 00 00 ff e9 00 ................
213 | 256: 00 00 00 00 00 00 22 07 06 17 11 11 01 31 74 61 ......"......1ta
214 | 272: 62 6c 65 74 34 74 34 07 43 52 45 41 54 45 20 54 blet4t4.CREATE T
215 | 288: 41 42 4c 45 20 74 34 28 78 29 2a 06 06 17 13 11 ABLE t4(x)*.....
216 | 304: 01 3f 69 6e 64 65 78 74 33 78 74 33 06 43 52 45 .?indext3xt3.CRE
217 | 320: 41 54 45 20 49 4e 44 45 58 20 74 33 64 20 4f 4e ATE INDEX t3d ON
218 | 336: 20 74 33 28 78 29 2e 04 06 17 15 11 01 45 69 6e t3(x).......Ein
219 | 352: 64 65 78 74 32 63 64 74 32 05 43 52 45 41 54 45 dext2cdt2.CREATE
220 | 368: 20 49 4e 44 45 58 20 74 32 63 64 20 4f 4e 20 74 INDEX t2cd ON t
221 | 384: 32 28 63 2c 64 29 28 05 06 17 11 11 01 3d 74 61 2(c,d)(......=ta
222 | 400: 62 6c 65 74 33 74 33 04 43 52 45 41 54 45 20 54 blet3t3.CREATE T
223 | 416: 41 42 4c 45 20 74 33 28 63 2c 78 2c 65 2c 66 29 ABLE t3(c,x,e,f)
224 | 432: 28 02 06 17 11 11 01 3d 74 61 62 6c 65 74 32 74 (......=tablet2t
225 | 448: 32 03 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 2.CREATE TABLE t
226 | 464: 32 28 63 2c 64 2c 65 2c 66 29 24 01 06 17 11 11 2(c,d,e,f)$.....
227 | 480: 01 35 74 61 62 6c 65 74 31 74 31 02 43 52 45 41 .5tablet1t1.CREA
228 | 496: 54 45 20 54 41 42 4c 45 20 74 31 28 61 2c 62 29 TE TABLE t1(a,b)
229 | page 2 offset 512
230 | 0: 0d 00 00 00 04 01 cf 00 01 fa 01 f3 01 de 01 cf ................
231 | 176: 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
232 | 256: 00 00 14 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
233 | 368: 00 00 00 00 00 00 00 00 00 00 00 00 1e 00 00 00 ................
234 | 416: 00 00 00 1b 00 00 00 00 04 00 00 00 00 00 00 00 ................
235 | 448: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0d ................
236 | 464: 04 03 17 17 73 65 76 65 6e 65 69 67 68 74 13 03 ....seveneight..
237 | 480: 03 07 07 40 14 00 00 00 00 00 00 40 18 00 00 00 ...@.......@....
238 | 496: 00 00 00 05 02 03 01 01 03 04 04 01 03 09 01 02 ................
239 | page 3 offset 1024
240 | 0: 0d 00 00 00 08 01 54 00 01 f7 01 ec 01 c5 01 aa ......T.........
241 | 16: 01 a1 01 96 01 6f 01 54 00 00 00 00 00 00 00 00 .....o.T........
242 | 32: 00 00 00 00 00 00 00 03 e8 00 00 00 00 00 00 00 ................
243 | 336: 00 00 00 00 19 08 05 16 17 17 17 65 69 67 68 74 ...........eight
244 | 352: 65 69 67 68 74 73 65 76 65 6e 73 65 76 ff ff ff eightsevensev...
245 | 368: 0e 05 07 07 07 07 40 18 00 00 00 00 00 00 40 18 ......@.......@.
246 | 384: 00 00 00 00 00 00 40 14 00 00 00 00 00 00 40 14 ......@.......@.
247 | 400: 00 00 00 00 00 00 09 06 05 01 01 01 01 04 04 03 ................
248 | 416: 03 07 05 05 01 01 09 09 02 02 19 04 05 17 17 17 ................
249 | 432: 17 73 65 6f 65 6e 65 69 67 68 74 65 69 67 68 74 .seoeneighteight
250 | 448: 73 65 76 65 6e 25 03 05 07 07 07 07 40 14 00 00 seven%......@...
251 | 464: 00 00 00 00 40 18 00 00 00 00 00 00 40 18 00 00 ....@.......@...
252 | 480: 00 00 00 00 40 14 00 00 00 00 00 00 09 02 05 01 ....@...........
253 | 496: 01 01 01 03 04 04 03 07 01 05 09 01 01 09 02 02 ................
254 | page 4 offset 1536
255 | 0: 0d 00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 ................
256 | 160: 00 00 00 ea 00 00 00 00 00 00 00 00 00 00 00 00 ................
257 | 336: 00 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 ............ ...
258 | page 5 offset 2048
259 | 0: 0a 00 00 00 08 01 96 00 01 fa 01 c4 01 f2 01 bc ................
260 | 16: 01 dc 01 a6 01 96 01 cc 00 00 00 00 00 00 00 00 ................
261 | 48: 00 00 00 00 00 00 00 00 00 00 10 00 00 00 00 00 ................
262 | 288: 00 00 00 00 00 00 00 00 00 64 00 00 00 2b 00 00 .........d...+..
263 | 400: 00 00 00 00 00 00 0f 04 17 17 01 65 69 67 68 74 ...........eight
264 | 416: 65 69 6f 68 74 08 15 04 07 07 01 40 18 00 00 00 eioht......@....
265 | 432: 00 00 00 40 18 00 00 00 00 00 00 07 07 04 01 01 ...@............
266 | 448: 01 04 04 06 07 04 01 01 01 02 02 05 0f 04 17 17 ................
267 | 464: 01 73 65 76 65 6e 65 69 67 68 74 04 15 04 07 07 .seveneight.....
268 | 480: 01 40 14 00 00 00 00 00 00 40 18 00 00 00 00 00 .@.......@......
269 | 496: 00 03 07 04 01 01 01 03 04 02 05 04 09 01 09 02 ................
270 | page 6 offset 2560
271 | 0: 0a 00 00 00 00 02 00 00 00 00 00 00 00 0d 00 00 ................
272 | 16: 00 08 01 c2 00 01 fb 01 f6 01 f1 01 ec 01 e0 01 ................
273 | 32: d4 01 cb 01 c2 00 00 00 00 00 00 00 00 00 00 00 ................
274 | 160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 ................
275 | 448: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 ................
276 | 464: 08 02 17 65 69 67 68 74 07 07 02 17 65 69 67 68 ...eight....eigh
277 | 480: 74 0a 06 02 07 40 18 00 00 00 00 00 00 0a 05 02 t....@..........
278 | 496: 07 40 18 00 04 02 01 04 03 03 02 01 04 03 02 02 .@..............
279 | end x/c03.db
280 }]
281 catchsql {INSERT INTO t3 SELECT * FROM t2;}
282} {1 {database disk image is malformed}}
283
danfffaf232018-12-14 13:18:35 +0000284
dan6e08c4a2019-02-06 18:08:42 +0000285do_test dbfuzz001-310 {
danfffaf232018-12-14 13:18:35 +0000286 sqlite3 db {}
287 db deserialize [decode_hexdb {
288| size 3584 pagesize 512 filename x/c02.db
289| page 1 offset 0
290| 0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00 SQLite format 3.
291| 16: 02 00 01 01 00 40 20 20 00 00 00 0c 00 00 00 07 .....@ ........
292| 32: 00 00 00 00 00 00 00 00 00 00 00 08 00 00 00 04 ................
293| 48: 00 00 00 00 00 00 00 04 00 00 00 01 00 00 00 00 ................
294| 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0c ................
295| 96: 00 2e 2c 50 0d 00 00 00 06 01 06 00 01 da 01 b0 ..,P............
296| 112: 01 56 01 86 01 2a 01 06 00 00 00 00 00 00 00 00 .V...*..........
297| 256: 00 00 00 00 00 00 22 07 06 17 11 11 01 31 74 61 ......"......1ta
298| 272: 62 6c 65 74 34 74 34 07 43 52 45 41 54 45 20 54 blet4t4.CREATE T
299| 288: 41 42 4c 45 20 74 34 28 78 29 2a 06 06 17 13 11 ABLE t4(x)*.....
300| 304: 01 3f 69 6e 64 65 78 74 33 78 74 33 05 43 52 45 .?indext3xt3.CRE
301| 320: 41 54 45 20 49 4e 44 45 58 20 74 33 78 20 4f 4e ATE INDEX t3x ON
302| 336: 20 74 33 28 78 29 2e 04 06 17 15 11 01 45 69 6e t3(x).......Ein
303| 352: 64 65 78 74 32 63 64 74 32 05 43 52 45 41 54 45 dext2cdt2.CREATE
304| 368: 20 49 4e 44 45 58 20 74 32 63 64 20 4f 4e 20 74 INDEX t2cd ON t
305| 384: 32 28 63 2c 64 29 28 05 06 17 11 11 01 3d 74 61 2(c,d)(......=ta
306| 400: 62 6c 65 74 33 74 33 07 43 52 45 41 54 45 20 54 blet3t3.CREATE T
307| 416: 41 42 4c 45 20 74 33 28 63 2c 78 2c 65 2c 66 29 ABLE t3(c,x,e,f)
drhc5a93d42019-08-12 00:08:07 +0000308| 432: 28 02 06 17 11 11 01 3d 74 61 62 6c 65 74 32 74 (......=tablet2t
danfffaf232018-12-14 13:18:35 +0000309| 448: 32 32 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 22CREATE TABLE t
310| 464: 32 28 63 2c 64 2c 65 2c 66 29 24 01 06 17 11 11 2(c,d,e,f)$.....
311| 480: 01 35 74 61 62 6c 65 74 31 74 31 02 43 52 45 41 .5tablet1t1.CREA
312| 496: 54 45 20 54 41 42 4c 45 20 74 31 28 61 2c 62 29 TE TABLE t1(a,b)
313| page 2 offset 512
314| 0: 0d 00 00 00 04 01 cf 00 01 fa 01 f3 01 de 01 cf ................
315| 160: 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 .. .............
316| 448: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0d ................
317| 464: 04 03 17 17 73 65 76 65 6e 65 69 67 68 74 13 03 ....seveneight..
318| 480: 03 07 07 40 14 00 00 00 00 00 00 40 18 00 00 00 ...@.......@....
319| 496: 00 00 00 05 02 03 01 01 03 04 04 01 03 09 01 02 ................
320| page 3 offset 1024
321| 0: 0d 00 00 00 08 01 54 00 01 f7 01 ec 01 c5 01 aa ......T.........
322| 16: 01 a1 01 96 01 6f 01 54 00 00 00 00 00 00 00 00 .....o.T........
323| 112: 00 00 dd 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
324| 336: 00 00 00 00 19 08 05 17 17 17 17 65 69 67 68 74 ...........eight
325| 352: 65 69 67 68 74 73 65 76 65 6e 73 65 76 65 6e 25 eightsevenseven%
326| 368: 07 05 07 07 07 07 40 18 00 00 00 00 00 00 40 18 ......@.......@.
327| 384: 00 00 00 00 00 00 40 14 00 00 00 00 00 00 40 14 ......@.......@.
328| 400: 00 00 00 00 00 00 09 06 05 01 01 01 01 04 04 03 ................
329| 416: 03 07 05 05 01 01 09 09 02 02 19 04 05 17 17 17 ................
330| 432: 17 73 65 76 65 6e 65 69 67 68 74 65 69 67 68 74 .seveneighteight
331| 448: 73 65 76 65 6e 25 03 05 07 07 07 07 40 14 00 00 seven%......@...
332| 464: 00 00 00 00 40 18 00 00 00 00 00 00 40 18 00 00 ....@.......@...
333| 480: 00 00 00 00 40 14 00 00 00 00 00 00 09 02 05 01 ....@...........
334| 496: 01 01 01 03 04 04 03 07 01 05 09 01 01 09 02 02 ................
335| page 4 offset 1536
336| 0: 0d 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 ................
337| 192: 00 00 00 00 00 00 7f 00 00 00 00 00 00 00 00 00 ................
338| 208: 00 e5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
339| page 5 offset 2048
340| 0: 0a 00 00 00 08 01 96 00 01 fa 01 c4 01 f2 01 bc ................
341| 16: 01 dc 01 a6 01 96 01 cc 00 00 00 00 00 00 00 00 ................
342| 240: 00 00 00 00 00 00 00 00 00 00 00 00 00 0e 00 00 ................
343| 400: 00 00 00 00 00 00 0f 04 17 07 01 65 69 67 68 74 ...........eight
344| 416: 65 69 67 68 74 08 15 04 07 07 01 40 18 00 00 00 eight......@....
345| 432: 00 00 00 40 18 00 00 00 00 00 00 07 07 04 01 01 ...@............
346| 448: 01 04 04 06 07 04 01 01 01 02 02 05 0f 04 17 17 ................
347| 464: 01 73 65 76 65 6e 65 69 67 68 74 04 15 04 07 07 .seveneight.....
348| 480: 01 40 14 00 00 00 00 00 00 40 18 00 00 00 00 00 .@.......@......
349| 496: 00 03 07 04 01 01 01 03 04 02 05 04 09 01 09 02 ................
350| page 6 offset 2560
351| 0: 0a 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 ................
352| 464: 00 00 00 00 00 00 00 00 00 00 7f 00 00 00 00 00 ................
353| page 7 offset 3072
354| 0: 0d 00 00 00 08 01 c2 00 01 fb 01 f6 01 f1 01 ec ................
355| 16: 01 e0 01 d4 01 cb 01 c2 00 00 00 00 00 00 00 00 ................
356| 448: 00 00 07 08 02 17 65 69 67 68 74 07 07 02 17 65 ......eight....e
357| 464: 69 67 68 74 0a 06 02 07 40 18 00 00 00 00 00 00 ight....@.......
358| 480: 0a 05 02 07 40 18 00 00 00 00 00 00 03 04 02 01 ....@...........
359| 496: 04 03 03 02 01 04 03 02 02 01 02 03 01 02 01 02 ................
360| end x/c02.db
361 }]
danfffaf232018-12-14 13:18:35 +0000362} {}
363
drhca439a42020-07-22 21:05:23 +0000364extra_schema_checks 0
dan6e08c4a2019-02-06 18:08:42 +0000365do_catchsql_test dbfuzz001-320 {
danb0c4c942019-01-24 15:16:17 +0000366 PRAGMA integrity_check;
367} {1 {database disk image is malformed}}
368
dan6e08c4a2019-02-06 18:08:42 +0000369do_catchsql_test dbfuzz001-330 {
danb0c4c942019-01-24 15:16:17 +0000370 DELETE FROM t3 WHERE x IN (SELECT x FROM t4);
371} {1 {database disk image is malformed}}
drhca439a42020-07-22 21:05:23 +0000372extra_schema_checks 1
danb0c4c942019-01-24 15:16:17 +0000373
drhf7e74902018-12-13 20:49:43 +0000374finish_test