| From: | Daniel Gustafsson <dgustafsson(at)postgresql(dot)org> |
|---|---|
| To: | pgsql-committers(at)lists(dot)postgresql(dot)org |
| Subject: | pgsql: Fix detection of truncated compressed backups |
| Date: | 2026-10-09 11:43:13 |
| Message-ID: | E1xF90L-00000000wPo-3y2H@gemulon.postgresql.org |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-committers |
Fix detection of truncated compressed backups
pg_verifybackup failed to detect truncated compressed tar backups
for zstd, lz4 and gzip compression.
astreamer_zstd_decompressor checked whether ZSTD_decompressStream()
returned an error. However, a positive return value at end-of-input
means that the final zstd frame has not completed. Record the state
and verify at finalization that zstd completed the frame. Also flush
any pending internally buffered output before performing that check.
astreamer_gzip_decompressor did not check whether inflate() had
reached Z_STREAM_END before finalizing. Record whether inflate()
completed the gzip stream, and reject finalization if it did not.
astreamer_lz4_decompressor did not check whether LZ4F_decompress()
completed the final frame before finalizing. Record the status of
decompression and reject finalization unless the frame completed.
This prevents pg_verifybackup from accepting a truncated compressed
tar backup.
Author: Chao Li <lic(at)highgo(dot)com>
Co-authored-by: Daniel Gustafsson <daniel(at)yesql(dot)se>
Reviewed-by: Osama Abdul Qader <osamaabdulqader(dot)cs(at)gmail(dot)com>
Reviewed-by: Zsolt Parragi <zsolt(dot)parragi(at)percona(dot)com>
Reviewed-by: Japin Li <japinli(at)hotmail(dot)com>
Discussion: https://postgr.es/m/5962B878-C43D-4EBC-9E95-1F945CE5E586@gmail.com
Backpatch-through: 19
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/e41b01f4359d3256943c00c834a3d9abef6c0129
Modified Files
--------------
src/bin/pg_verifybackup/t/010_client_untar.pl | 13 ++++++++
src/fe_utils/astreamer_gzip.c | 13 +++++++-
src/fe_utils/astreamer_lz4.c | 13 ++++++++
src/fe_utils/astreamer_zstd.c | 46 +++++++++++++++++++++++++++
src/include/fe_utils/astreamer.h | 14 ++++++++
src/tools/pgindent/typedefs.list | 1 +
6 files changed, 99 insertions(+), 1 deletion(-)
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Daniel Gustafsson | 2026-10-09 11:43:31 | pgsql: Fix detection of truncated zstd and LZ4 dump data |
| Previous Message | Michael Paquier | 2026-10-09 05:00:18 | pgsql: Treat any negative ws_file as closed in xlogreader.c |