]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Fix heap-buffer-overflow in pglz_decompress() on corrupt input.
authorAndrew Dunstan <andrew@dunslane.net>
Thu, 9 Apr 2026 15:48:55 +0000 (11:48 -0400)
committerAndrew Dunstan <andrew@dunslane.net>
Fri, 10 Apr 2026 14:27:16 +0000 (10:27 -0400)
commite630f65d03047ccab67ebb0e20faa7f3f24b526b
tree40c3436551d2916a4b7ad2fe075a4fb9e1e7eeff
parent0fe032e6a666173a587bdd207e13e68a5c20d180
Fix heap-buffer-overflow in pglz_decompress() on corrupt input.

When decoding a match tag, pglz_decompress() reads 2 bytes (or 3
for extended-length matches) from the source buffer before checking
whether enough data remains.  The existing bounds check (sp > srcend)
occurs after the reads, so truncated compressed data that ends
mid-tag causes a read past the allocated buffer.

Fix by validating that sufficient source bytes are available before
reading each part of the match tag.  The post-read sp > srcend
check is no longer needed and is removed.

Found by fuzz testing with libFuzzer and AddressSanitizer.

Backpatch-through: 14
src/common/pg_lzcompress.c