- Notifications
You must be signed in to change notification settings - Fork5
Commit60b2444
committed
Add code to prevent transaction ID wraparound by enforcing a safe limit
in GetNewTransactionId(). Since the limit value has to be computedbefore we run any real transactions, this requires adding code to databasestartup to scan pg_database and determine the oldest datfrozenxid.This can conveniently be combined with the first stage of an attack onthe problem that the 'flat file' copies of pg_shadow and pg_group arenot properly updated during WAL recovery. The code I've added tostartup resides in a new file src/backend/utils/init/flatfiles.c, andit is responsible for rewriting the flat files as well as initializingthe XID wraparound limit value. This will eventually allow us to getrid of GetRawDatabaseInfo too, but we'll need an initdb so we can adda trigger to pg_database.1 parent617d16f commit60b2444
File tree
15 files changed
+1191
-571
lines changed- doc/src/sgml
- src
- backend
- access/transam
- bootstrap
- commands
- libpq
- postmaster
- tcop
- utils/init
- include
- access
- commands
- utils
15 files changed
+1191
-571
lines changedLines changed: 45 additions & 21 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
1 | 1 |
| |
2 |
| - | |
| 2 | + | |
3 | 3 |
| |
4 | 4 |
| |
5 | 5 |
| |
| |||
290 | 290 |
| |
291 | 291 |
| |
292 | 292 |
| |
293 |
| - | |
| 293 | + | |
294 | 294 |
| |
295 | 295 |
| |
296 | 296 |
| |
| |||
313 | 313 |
| |
314 | 314 |
| |
315 | 315 |
| |
316 |
| - | |
317 |
| - | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
318 | 323 |
| |
319 | 324 |
| |
320 | 325 |
| |
| |||
363 | 368 |
| |
364 | 369 |
| |
365 | 370 |
| |
366 |
| - | |
| 371 | + | |
| 372 | + | |
367 | 373 |
| |
368 | 374 |
| |
369 | 375 |
| |
| |||
391 | 397 |
| |
392 | 398 |
| |
393 | 399 |
| |
394 |
| - | |
395 |
| - | |
| 400 | + | |
| 401 | + | |
396 | 402 |
| |
397 | 403 |
| |
398 | 404 |
| |
399 | 405 |
| |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
400 | 431 |
| |
401 | 432 |
| |
402 | 433 |
| |
| |||
410 | 441 |
| |
411 | 442 |
| |
412 | 443 |
| |
413 |
| - | |
414 |
| - | |
415 |
| - | |
416 |
| - | |
417 |
| - | |
418 |
| - | |
| 444 | + | |
419 | 445 |
| |
420 | 446 |
| |
421 | 447 |
| |
422 | 448 |
| |
423 |
| - | |
424 |
| - | |
425 |
| - | |
426 |
| - | |
427 |
| - | |
428 |
| - | |
429 |
| - | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
430 | 455 |
| |
431 | 456 |
| |
432 |
| - | |
433 | 457 |
| |
434 | 458 |
| |
435 | 459 |
| |
|
Lines changed: 112 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
6 | 6 |
| |
7 | 7 |
| |
8 | 8 |
| |
9 |
| - | |
| 9 | + | |
10 | 10 |
| |
11 | 11 |
| |
12 | 12 |
| |
| |||
16 | 16 |
| |
17 | 17 |
| |
18 | 18 |
| |
| 19 | + | |
19 | 20 |
| |
20 | 21 |
| |
| 22 | + | |
21 | 23 |
| |
22 | 24 |
| |
23 | 25 |
| |
| |||
46 | 48 |
| |
47 | 49 |
| |
48 | 50 |
| |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
49 | 82 |
| |
50 | 83 |
| |
51 | 84 |
| |
| |||
137 | 170 |
| |
138 | 171 |
| |
139 | 172 |
| |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
140 | 251 |
| |
141 | 252 |
| |
142 | 253 |
| |
|
Lines changed: 34 additions & 14 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
10 | 10 |
| |
11 | 11 |
| |
12 | 12 |
| |
13 |
| - | |
| 13 | + | |
14 | 14 |
| |
15 | 15 |
| |
16 | 16 |
| |
| |||
28 | 28 |
| |
29 | 29 |
| |
30 | 30 |
| |
31 |
| - | |
32 | 31 |
| |
33 | 32 |
| |
34 | 33 |
| |
35 | 34 |
| |
36 | 35 |
| |
37 | 36 |
| |
38 | 37 |
| |
| 38 | + | |
39 | 39 |
| |
40 | 40 |
| |
41 | 41 |
| |
| |||
1354 | 1354 |
| |
1355 | 1355 |
| |
1356 | 1356 |
| |
| 1357 | + | |
1357 | 1358 |
| |
1358 | 1359 |
| |
1359 | 1360 |
| |
| |||
1464 | 1465 |
| |
1465 | 1466 |
| |
1466 | 1467 |
| |
1467 |
| - | |
| 1468 | + | |
1468 | 1469 |
| |
1469 |
| - | |
| 1470 | + | |
1470 | 1471 |
| |
1471 | 1472 |
| |
1472 | 1473 |
| |
| |||
1654 | 1655 |
| |
1655 | 1656 |
| |
1656 | 1657 |
| |
1657 |
| - | |
| 1658 | + | |
1658 | 1659 |
| |
1659 |
| - | |
1660 |
| - | |
| 1660 | + | |
| 1661 | + | |
| 1662 | + | |
| 1663 | + | |
| 1664 | + | |
| 1665 | + | |
1661 | 1666 |
| |
1662 | 1667 |
| |
1663 | 1668 |
| |
| |||
2034 | 2039 |
| |
2035 | 2040 |
| |
2036 | 2041 |
| |
2037 |
| - | |
2038 |
| - | |
2039 |
| - | |
2040 | 2042 |
| |
| 2043 | + | |
| 2044 | + | |
| 2045 | + | |
| 2046 | + | |
| 2047 | + | |
| 2048 | + | |
| 2049 | + | |
| 2050 | + | |
| 2051 | + | |
| 2052 | + | |
| 2053 | + | |
| 2054 | + | |
| 2055 | + | |
| 2056 | + | |
| 2057 | + | |
| 2058 | + | |
| 2059 | + | |
| 2060 | + | |
2041 | 2061 |
| |
2042 | 2062 |
| |
2043 | 2063 |
| |
| |||
3277 | 3297 |
| |
3278 | 3298 |
| |
3279 | 3299 |
| |
3280 |
| - | |
3281 |
| - | |
| 3300 | + | |
| 3301 | + | |
3282 | 3302 |
| |
3283 | 3303 |
| |
3284 | 3304 |
| |
| |||
3387 | 3407 |
| |
3388 | 3408 |
| |
3389 | 3409 |
| |
3390 |
| - | |
3391 |
| - | |
| 3410 | + | |
| 3411 | + | |
3392 | 3412 |
| |
3393 | 3413 |
| |
3394 | 3414 |
| |
|
Lines changed: 3 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
8 | 8 |
| |
9 | 9 |
| |
10 | 10 |
| |
11 |
| - | |
| 11 | + | |
12 | 12 |
| |
13 | 13 |
| |
14 | 14 |
| |
| |||
39 | 39 |
| |
40 | 40 |
| |
41 | 41 |
| |
| 42 | + | |
42 | 43 |
| |
43 | 44 |
| |
44 | 45 |
| |
| |||
407 | 408 |
| |
408 | 409 |
| |
409 | 410 |
| |
| 411 | + | |
410 | 412 |
| |
411 | 413 |
| |
412 | 414 |
| |
|
0 commit comments
Comments
(0)