diff options
author | Thomas Munro | 2023-09-25 20:07:26 +0000 |
---|---|---|
committer | Thomas Munro | 2023-09-25 21:53:38 +0000 |
commit | becfbdd6c1c94fe03391368080029a6dd8523658 (patch) | |
tree | ad34f7ca7e042a4b428fbb32509535339634ab89 /src/backend/access/gist | |
parent | 13aeaf0797e75a0c53abb66ac907ba14b4e47f6b (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 <[email protected]>
Tested-by: Alexander Lakhin <[email protected]>
Discussion: https://postgr.es/m/CA%2BhUKGLCkTT7zYjzOxuLGahBdQ%3DMcF%3Dz5ZvrjSOnW4EDhVjT-g%40mail.gmail.com
Diffstat (limited to 'src/backend/access/gist')
0 files changed, 0 insertions, 0 deletions