aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLidong Yan <yldhome2d2@gmail.com>2025-06-27 22:09:16 +0800
committerMichael Niedermayer <michael@niedermayer.cc>2025-06-28 23:54:39 +0200
commit40a3d35da6ba51e0a4e59e754d033feefafc036d (patch)
tree8c8a73050251230008a92758f6563e1808d14850
parent7d384869751b45d4d057df67dde9050a82590a6e (diff)
downloadffmpeg-40a3d35da6ba51e0a4e59e754d033feefafc036d.tar.gz
avcodec/vorbisenc: fix leak if av_mallocz failed
In put_main_header(), av_mallocz() allocates memory to local variable buffer, buffer leaks if av_mallocz() to *out failed. Add av_free(buffer) before return error code. Signed-off-by: Lidong Yan <502024330056@smail.nju.edu.cn> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-rw-r--r--libavcodec/vorbisenc.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/libavcodec/vorbisenc.c b/libavcodec/vorbisenc.c
index 99ac72c910..b4680a11ed 100644
--- a/libavcodec/vorbisenc.c
+++ b/libavcodec/vorbisenc.c
@@ -740,8 +740,10 @@ static int put_main_header(vorbis_enc_context *venc, uint8_t **out)
len = hlens[0] + hlens[1] + hlens[2];
p = *out = av_mallocz(64 + len + len/255);
- if (!p)
+ if (!p) {
+ av_freep(&buffer);
return AVERROR(ENOMEM);
+ }
*p++ = 2;
p += av_xiphlacing(p, hlens[0]);