[FFmpeg-devel] [PATCH] avdevice/gdigrab: Memory leak if BitBlt return false.

dont.buck at gmail.com dont.buck at gmail.com
Thu Oct 22 16:23:00 EEST 2020


From: walle <dont.buck at gmail.com>

lock screen or other permission notification in win7 or
higher windows version would case BitBlt return false,
and gdigrab_read_packet will return AVERROR(EIO) and do nothing to
allocated packet data, then memory leak happend. It's necessary to
release packet data before return from gdigrab_read_packet.
---
 libavdevice/gdigrab.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/libavdevice/gdigrab.c b/libavdevice/gdigrab.c
index f4444406fa..b69494c98d 100644
--- a/libavdevice/gdigrab.c
+++ b/libavdevice/gdigrab.c
@@ -576,6 +576,7 @@ static int gdigrab_read_packet(AVFormatContext *s1, AVPacket *pkt)
                 clip_rect.bottom - clip_rect.top,
                 source_hdc,
                 clip_rect.left, clip_rect.top, SRCCOPY | CAPTUREBLT)) {
+        av_packet_unref(pkt);
         WIN32_API_ERROR("Failed to capture image");
         return AVERROR(EIO);
     }
-- 
2.25.1



More information about the ffmpeg-devel mailing list