aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLidong Yan <yldhome2d2@gmail.com>2025-06-29 14:45:25 +0800
committerMichael Niedermayer <michael@niedermayer.cc>2025-07-03 23:05:14 +0200
commit98afcd3da776df40955257daf63b6bf8c1fd764e (patch)
tree07fd99c2252e7ce30db2b8bbbf65cfa69f52c44f
parent7ed5a7094fe6430e9295424623e740dd57873a6e (diff)
downloadffmpeg-98afcd3da776df40955257daf63b6bf8c1fd764e.tar.gz
avcodec/sunrast: fix leak in sunrast_decode_frame()
In sunrast_decode_frame(), we use av_malloc_array() allocates memory to ptr and ptr2. However if buf_end - buf < 1, this function returns error code without freeing this memory thus cause a leak. Add av_freep() before return. Signed-off-by: Lidong Yan <502024330056@smail.nju.edu.cn> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-rw-r--r--libavcodec/sunrast.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/libavcodec/sunrast.c b/libavcodec/sunrast.c
index 9e49c4f275..cc27838f5b 100644
--- a/libavcodec/sunrast.c
+++ b/libavcodec/sunrast.c
@@ -163,8 +163,10 @@ static int sunrast_decode_frame(AVCodecContext *avctx, AVFrame *p,
x = 0;
while (ptr != end && buf < buf_end) {
run = 1;
- if (buf_end - buf < 1)
+ if (buf_end - buf < 1) {
+ av_freep(&ptr2);
return AVERROR_INVALIDDATA;
+ }
if ((value = *buf++) == RLE_TRIGGER) {
run = *buf++ + 1;