Fix read beyond buffer bug introduced by the split xlog.c patch.
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Wed, 16 Feb 2022 10:01:32 +0000 (12:01 +0200)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Wed, 16 Feb 2022 10:01:32 +0000 (12:01 +0200)
commit9ed87a78e0377728588e5c8688202195694581aa
tree38313c971e677018de0216b307607783da7216b7
parent2549f0661bd28571d7200d6f82f752a7ee5d47e1
Fix read beyond buffer bug introduced by the split xlog.c patch.

FinishWalRecovery() copied the valid part of the last WAL block into a
palloc'd buffer, and the code in StartupXLOG() copied it to the WAL
buffer. But the memcpy in StartupXLOG() copied a full 8kB block, not
just the valid part, i.e. it copied from beyond the end of the buffer.
The invalid part was cleared immediately afterwards, so as long as the
memory was allocated and didn't segfault, it didn't do any harm, but
it can definitely segfault.

Discussion: https://www.postgresql.org/message-id/efc12e32-5af2-3485-5b1d-5af9f707491a@iki.fi
src/backend/access/transam/xlog.c