]> granicus.if.org Git - postgresql/commit
Avoid somewhat-theoretical overflow risks in RecordIsValid().
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 21 Aug 2012 22:41:52 +0000 (18:41 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 21 Aug 2012 22:41:52 +0000 (18:41 -0400)
commit10685ec082181b285a48d982b4c3463fd80ee5ae
treeb063784433d4dc489e2230fb2f8427711d5a2a1c
parent0f524ea0cf388a149f362e48a33c01662eeddc04
Avoid somewhat-theoretical overflow risks in RecordIsValid().

This improves on commit 51fed14d73ed3acd2282b531fb1396877e44e86a by
eliminating the assumption that we can form <some pointer value> +
<some offset> without overflow.  The entire point of those tests is that
we don't trust the offset value, so coding them in a way that could wrap
around if the buffer happens to be near the top of memory doesn't seem
sound.  Instead, track the remaining space as a size_t variable and
compare offsets against that.

Also, improve comment about why we need the extra early check on
xl_tot_len.
src/backend/access/transam/xlog.c