postgres.git / summary / log / commit / refs
commit 3f06324705aeb5a4c67b6c08f2016c4c3c756723
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: Wed Dec 18 03:31:26 2024 +0000
First released in: 18.0, 16.7, 17.3
Fix memory leak in pg_restore with zstd-compressed data.
EndCompressorZstd() neglected to free everything. This was
most visible with a lot of large objects in the dump.
Per report from Tomasz Szypowski. Back-patch to v16
where this code came in.
Discussion: https://postgr.es/m/DU0PR04MB94193D038A128EF989F922D199042@DU0PR04MB9419.eurprd04.prod.outlook.com
src/bin/pg_dump/compress_zstd.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/pg_dump/compress_zstd.c b/src/bin/pg_dump/compress_zstd.c
index aa5aff2fee3..02987d6b0ba 100644
--- a/src/bin/pg_dump/compress_zstd.c
+++ b/src/bin/pg_dump/compress_zstd.c
@@ -137,9 +137,10 @@ EndCompressorZstd(ArchiveHandle *AH, CompressorState *cs)
Assert(zstdcs->dstream == NULL);
_ZstdWriteCommon(AH, cs, true);
ZSTD_freeCStream(zstdcs->cstream);
- pg_free(zstdcs->output.dst);
}
+ /* output buffer may be allocated in either mode */
+ pg_free(zstdcs->output.dst);
pg_free(zstdcs);
}
[parent: d96d1d5152f3]