Be more wary of corrupt data in pageinspect's heap_page_items().
authorTom Lane
Sat, 19 Apr 2025 20:37:42 +0000 (16:37 -0400)
committerTom Lane
Sat, 19 Apr 2025 20:37:42 +0000 (16:37 -0400)
commitd05996340d7a4bc32c464be085727ccddf28376b
tree253d11bfbcad99b395cfc5a07cb163d6723ee5ed
parent88e947136b47664b6936b35542f2d1eda0c90588
Be more wary of corrupt data in pageinspect's heap_page_items().

The original intent in heap_page_items() was to return nulls, not
throw an error or crash, if an item was sufficiently corrupt that
we couldn't safely extract data from it.  However, commit d6061f83a
utterly missed that memo, and not only put in an un-length-checked
copy of the tuple's data section, but also managed to break the check
on sane nulls-bitmap length.  Either mistake could possibly lead to
a SIGSEGV crash if the tuple is corrupt.

Bug: #18896
Reported-by: Dmitry Kovalenko
Author: Dmitry Kovalenko 
Reviewed-by: Tom Lane
Discussion: https://postgr.es/m/18896-add267b8e06663e3@postgresql.org
Backpatch-through: 13
contrib/pageinspect/heapfuncs.c