Thread: pgsql: Improve pglz_decompress's defenses against corrupt compressed da

pgsql: Improve pglz_decompress's defenses against corrupt compressed da

From
Tom Lane
Date:
Improve pglz_decompress's defenses against corrupt compressed data.

When processing a match tag, check to see if the claimed "off"
is more than the distance back to the output buffer start.
If it is, then the data is corrupt, and what's more we would
fetch from outside the buffer boundaries and potentially incur
a SIGSEGV.  (Although the odds of that seem relatively low, given
that "off" can't be more than 4K.)

Back-patch to v13; before that, this function wasn't really
trying to protect against bad data.

Report and fix by Flavien Guedez.

Discussion: https://postgr.es/m/01fc0593-e31e-463d-902c-dd43174acee2@oopacity.net

Branch
------
REL_15_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/985ac5ce292ab084fe56b90528df6a2496f2c507

Modified Files
--------------
src/common/pg_lzcompress.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)