fix-partial-lz4-decompression.patch
text/x-diff
Filename: fix-partial-lz4-decompression.patch
Type: text/x-diff
Part: 0
Patch
Format: unified
| File | + | − |
|---|---|---|
| src/backend/access/common/toast_compression.c | 4 | 0 |
diff --git a/src/backend/access/common/toast_compression.c b/src/backend/access/common/toast_compression.c index 00af1740cf..74e449992a 100644 --- a/src/backend/access/common/toast_compression.c +++ b/src/backend/access/common/toast_compression.c @@ -220,6 +220,10 @@ lz4_decompress_datum_slice(const struct varlena *value, int32 slicelength) if (LZ4_versionNumber() < 10803) return lz4_decompress_datum(value); + /* liblz4 assumes that slicelength is not an overestimate */ + if (slicelength >= VARRAWSIZE_4B_C(value)) + return lz4_decompress_datum(value); + /* allocate memory for the uncompressed data */ result = (struct varlena *) palloc(slicelength + VARHDRSZ);