postgres.git / summary / log / commit / refs
commit f4ba78081895d40ced104fc63914be7fd2e4372c
Author: Michael Paquier <michael@paquier.xyz>
Date: Wed May 13 05:43:50 2026 +0000
Add more tests for corrupted data with pglz_decompress()
Two cases fixed by 2b5ba2a0a141 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 67d318e70402.
Reviewed-by: Ayush Tiwari <ayushtiwari.slg01@gmail.com>
Discussion: https://postgr.es/m/agF4xkIdRcrCIprs@paquier.xyz
Backpatch-through: 14
src/test/regress/expected/compression_pglz.out | 12 ++++++++++++
src/test/regress/sql/compression_pglz.sql | 10 ++++++++++
2 files changed, 22 insertions(+)
diff --git a/src/test/regress/expected/compression_pglz.out b/src/test/regress/expected/compression_pglz.out
index 0ef49d42506..066a3317c65 100644
--- a/src/test/regress/expected/compression_pglz.out
+++ b/src/test/regress/expected/compression_pglz.out
@@ -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;
diff --git a/src/test/regress/sql/compression_pglz.sql b/src/test/regress/sql/compression_pglz.sql
index a44af02afb7..dbd37f7d4eb 100644
--- a/src/test/regress/sql/compression_pglz.sql
+++ b/src/test/regress/sql/compression_pglz.sql
@@ -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;
[parent: b5f7e7569c09]