pgsql: Fix edge-case for xl_tot_len broken by bae868ca. - Mailing list pgsql-committers

From Thomas Munro
Subject pgsql: Fix edge-case for xl_tot_len broken by bae868ca.
Date
Msg-id E1qktog-005wgp-Dh@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
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

Branch
------
REL_16_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/10d0591ea2274e5a471a1a489f7714303b88c329

Modified Files
--------------
src/backend/access/transam/xlogreader.c | 11 +++++++++++
src/test/recovery/t/039_end_of_wal.pl   | 13 +++++++++++++
2 files changed, 24 insertions(+)


pgsql-committers by date:

Previous
From: Thomas Munro
Date:
Subject: pgsql: Fix edge-case for xl_tot_len broken by bae868ca.
Next
From: Thomas Munro
Date:
Subject: pgsql: Fix edge-case for xl_tot_len broken by bae868ca.