diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2024-12-17 22:31:26 -0500 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2024-12-17 22:31:26 -0500 |
commit | 3f06324705aeb5a4c67b6c08f2016c4c3c756723 (patch) | |
tree | fac1dabc312296e3a1bdff0e76be0defc55f8865 /src | |
parent | d96d1d5152f30d15678e08e75b42756101b7cab6 (diff) | |
download | postgresql-3f06324705aeb5a4c67b6c08f2016c4c3c756723.tar.gz postgresql-3f06324705aeb5a4c67b6c08f2016c4c3c756723.zip |
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
Diffstat (limited to 'src')
-rw-r--r-- | src/bin/pg_dump/compress_zstd.c | 3 |
1 files changed, 2 insertions, 1 deletions
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); } |