diff options
| author | Thomas Munro <tmunro@postgresql.org> | 2023-09-26 09:07:26 +1300 |
|---|---|---|
| committer | Thomas Munro <tmunro@postgresql.org> | 2023-09-26 10:54:47 +1300 |
| commit | 45d1fe8b53d44d94059e55264514afa589759d51 (patch) | |
| tree | 8fc0523f75a824558a8d9fa3b72de954e4ed01ed /src/include/commands/vacuum.h | |
| parent | d1c76fdec3751c724a25d449ea5aeeb33a27b3d3 (diff) | |
Fix edge-case for xl_tot_len broken by bae868ca.
bae868ca removed a check that was still needed. If you had an
xl_tot_len at the end of a page that was too small for a record header,
but not big enough to span onto the next page, we'd immediately perform
the CRC check using a bogus large length. Because of arbitrary coding
differences between the CRC implementations on different platforms,
nothing very bad happened on common modern systems. On systems using
the _sb8.c fallback we could segfault.
Restore that check, add a new assertion and supply a test for that case.
Back-patch to 12, like bae868ca.
Tested-by: Tom Lane <tgl@sss.pgh.pa.us>
Tested-by: Alexander Lakhin <exclusion@gmail.com>
Discussion: https://postgr.es/m/CA%2BhUKGLCkTT7zYjzOxuLGahBdQ%3DMcF%3Dz5ZvrjSOnW4EDhVjT-g%40mail.gmail.com
Diffstat (limited to 'src/include/commands/vacuum.h')
0 files changed, 0 insertions, 0 deletions
