Add more tests for corrupted data with pglz_decompress()

Two cases fixed by 2b5ba2a0a1 were not covered, to emulate the
handling of corrupted data, for:
- set control bit with a valid 2-byte match tag where offset is 0.
- set control bit with a valid 2-byte match tag where offset exceeds
output written.

Oversight in 67d318e704.

Reviewed-by: Ayush Tiwari <ayushtiwari.slg01@gmail.com>
Discussion: https://postgr.es/m/agF4xkIdRcrCIprs@paquier.xyz
Backpatch-through: 14
This commit is contained in:
Michael Paquier 2026-05-13 14:43:42 +09:00
parent 422e54e309
commit 900c07b854
2 changed files with 22 additions and 0 deletions

View file

@ -60,6 +60,18 @@ SELECT test_pglz_decompress('\x010f01'::bytea, 1024, false);
ERROR: pglz_decompress failed
SELECT test_pglz_decompress('\x010f01'::bytea, 1024, true);
ERROR: pglz_decompress failed
-- Corrupted compressed data. Set control bit with a valid 2-byte match
-- tag where offset exceeds output written.
SELECT test_pglz_decompress('\x011001'::bytea, 1024, false);
ERROR: pglz_decompress failed
SELECT test_pglz_decompress('\x011001'::bytea, 1024, true);
ERROR: pglz_decompress failed
-- Corrupted compressed data. Set control bit with a valid 2-byte match
-- tag where offset is 0.
SELECT test_pglz_decompress('\x010300'::bytea, 1024, false);
ERROR: pglz_decompress failed
SELECT test_pglz_decompress('\x010300'::bytea, 1024, true);
ERROR: pglz_decompress failed
-- Clean up
DROP FUNCTION test_pglz_compress;
DROP FUNCTION test_pglz_decompress;

View file

@ -48,6 +48,16 @@ SELECT test_pglz_decompress('\x01ff'::bytea, 1024, true);
SELECT test_pglz_decompress('\x010f01'::bytea, 1024, false);
SELECT test_pglz_decompress('\x010f01'::bytea, 1024, true);
-- Corrupted compressed data. Set control bit with a valid 2-byte match
-- tag where offset exceeds output written.
SELECT test_pglz_decompress('\x011001'::bytea, 1024, false);
SELECT test_pglz_decompress('\x011001'::bytea, 1024, true);
-- Corrupted compressed data. Set control bit with a valid 2-byte match
-- tag where offset is 0.
SELECT test_pglz_decompress('\x010300'::bytea, 1024, false);
SELECT test_pglz_decompress('\x010300'::bytea, 1024, true);
-- Clean up
DROP FUNCTION test_pglz_compress;
DROP FUNCTION test_pglz_decompress;