From dacc2b35714855bd58b20d9cf00bb950672e8431 Mon Sep 17 00:00:00 2001 From: Christian Schneider Date: Mon, 1 Sep 2025 17:01:09 +0200 Subject: [PATCH] Fix a memory leak with zstd_uncompress/zstd_uncompress_dist --- tests/memory_001.phpt | 11 +++++++++++ zstd.c | 4 ++-- 2 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 tests/memory_001.phpt diff --git a/tests/memory_001.phpt b/tests/memory_001.phpt new file mode 100644 index 0000000..61c1eba --- /dev/null +++ b/tests/memory_001.phpt @@ -0,0 +1,11 @@ +--TEST-- +memory_usage regression in 0.15.0 +--FILE-- + +--EXPECT-- +0 diff --git a/zstd.c b/zstd.c index 8137d72..b12e303 100644 --- a/zstd.c +++ b/zstd.c @@ -527,7 +527,7 @@ ZEND_FUNCTION(zstd_uncompress) ctx.input.size = ZSTR_LEN(input); ctx.input.pos = 0; - ctx.output.dst = emalloc(size); + ctx.output.dst = erealloc(ctx.output.dst, size); ctx.output.size = size; ctx.output.pos = 0; @@ -646,7 +646,7 @@ ZEND_FUNCTION(zstd_uncompress_dict) ctx.input.size = ZSTR_LEN(input); ctx.input.pos = 0; - ctx.output.dst = emalloc(size); + ctx.output.dst = erealloc(ctx.output.dst, size); ctx.output.size = size; ctx.output.pos = 0;