From patchwork Tue Mar 22 23:47:24 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Volk X-Patchwork-Id: 34916 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:ab0:5fda:0:0:0:0:0 with SMTP id g26csp769236uaj; Tue, 22 Mar 2022 16:47:50 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz9bEDodChnf68dn6+yfmLPOxjv0i+x7esMYfw9R23whV5zryB/PyFpgFibaYgtlTc9IMFX X-Received: by 2002:a17:907:d16:b0:6d6:e3b6:9cd8 with SMTP id gn22-20020a1709070d1600b006d6e3b69cd8mr27803468ejc.94.1647992870400; Tue, 22 Mar 2022 16:47:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1647992870; cv=none; d=google.com; s=arc-20160816; b=rkad7eDBavDPaeX91228NWs8xNCxkrSmgFgmJUwqHXxFkl4fqiI9ToiS8dN9Ka1ErF wQxOGw0M46fKPfE6UCclrUq4WiDFmng8XWjKr3RJQers/fJmmj5SDZ6vdZ7MxynGem8S DiMKhNPGguTrt762bNEApmT5Rgs5N24cnZi+L38ShHEI2hwP08bt6m0AwF6w5GLw+3Ts 7f3gLWLE+99PDJkYWmapXRahJWWtapqkHonhZjKWvL2UYW0P5dMF6w2vq5ix0tWJQcVP 2wMcgG/IpRP22VoHg7/YZ19ZFqxT37b7QTXm7n4lSN+cw839Jn2ZFETd0dwGV74w9pwc z4uA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject:to :message-id:date:from:mime-version:dkim-signature:delivered-to; bh=/UI+BTtS/iuVWqtEzI49KEvpag3uqVVaR/TWL7eJ0mw=; b=OgYeNs+2LkYVdTqZA+os+tFcBbwHL34EniGADkwB4PFa7hkqB6TJ37Ouib2OOBF8zA MZjOP3DRfnvPv8WaQYCnn/01JW3W2m0lH+8JKiCnr6CHRmnTrUAaypVm8jxwk7eHDyNQ 0QPMuWMgUYaeLeu2h2MgQh5X/pF6uceMU3wlqF4ToGKo3FhUduW1MU9b37KYuMu+Twbd TLcNWXjfNcL9Nh/NOFBrErsObVxieo9zMjYdta02AiwGey/Eu++xqmeM3c2kYxZMUcpg t6nMSrKRExwY9Ez0mfSFv4wtiJUXPn1OhZ41WQ8Sm+gq5vuESpn6QB5yUaXcaln8lq5n pJoA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=mncOW9eq; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id p27-20020a50cd9b000000b00418c2b5bdcbsi12070572edi.173.2022.03.22.16.47.48; Tue, 22 Mar 2022 16:47:50 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=mncOW9eq; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id AA63068B072; Wed, 23 Mar 2022 01:47:44 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-yb1-f180.google.com (mail-yb1-f180.google.com [209.85.219.180]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4391068A867 for ; Wed, 23 Mar 2022 01:47:38 +0200 (EET) Received: by mail-yb1-f180.google.com with SMTP id f38so36582948ybi.3 for ; Tue, 22 Mar 2022 16:47:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:from:date:message-id:subject:to; bh=GMvzY+izx1FBWDzZyJz3TcAo7rXhYcjjoGaK9rlOiz0=; b=mncOW9eqysdKMrOqoW6mvknkr6QRh6stDo6h46dIx/+zxKJdysNKOofF+Bo84woRuM hxsEu9usOye24DJd154CwckrRCTJ4/V4DXyVyVPTSYS7eNXy5I2YmN6wmWjVPxFki2A4 MSuGi548xeApMStZ8Gckfzp6/0JmLNK6J8RLcBECtPjfrWPebN55duzGtwPySqYuTRhZ 8nuX8GHuBOAvB70tW5BLNxdNRrYlBn347ek85O5ecj8RNArJuzwPiOh/oLWoupSfNpjZ YbggY/OrO2orof/VujB1OpuMAuWzZVc9bTIR+5iyZOJUl5LEGRA7CRq+5viCvNAIe2uB SCCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=GMvzY+izx1FBWDzZyJz3TcAo7rXhYcjjoGaK9rlOiz0=; b=e0I+2wbajNnK5K5YiCJYjB0qxdQPRbURofqGVXYUQ7/kpQoN4w+oRAVELTgwGrLdJy Gwq94M5rKeG8tvXzTGGLCwJA6lRQDzq3Zp+Sr0cgIZahOl5ZmxKCanqaSfwaxo945nL7 QNIGGQFLs3alkw/Su5DTMUoPo/fNMkfSCzVkkX7q3fOWxUksV9XauWJXtVqcsinLZhZJ +3t8L/y1LNltl6riL/GMPHBMcmwXjH1+NjtxjPAIdkdly+1+bVuqEHySHxUrK5NLjpRg CfTk8ncTIRGk68EwrkIFd4PeioMgAZcGSl4eW40+pOEIJwhbFYKENUFSGeFSPaJ8Exjb xzxw== X-Gm-Message-State: AOAM531Sq84j9MxakYfT8VsDhuMxiPXeB2P+voKV9UumE42n4NwgeQNE uOWjGg9FryCN2FIZPQ9OeVsxcEqWx6FIdhdkw3+cjPZCRu5OOA== X-Received: by 2002:a25:81cd:0:b0:629:2e95:93e9 with SMTP id n13-20020a2581cd000000b006292e9593e9mr29804376ybm.321.1647992856449; Tue, 22 Mar 2022 16:47:36 -0700 (PDT) MIME-Version: 1.0 From: Andrey Volk Date: Wed, 23 Mar 2022 02:47:24 +0300 Message-ID: To: ffmpeg-devel@ffmpeg.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [FFmpeg-devel] [PATCH] avcodec/libwebpenc_animencoder: Fix memory leak of WebPData in libwebp_anim_encode_frame() X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: OyBvTqeVz2tM A fix attached. ``` ==37349==ERROR: LeakSanitizer: detected memory leaks Direct leak of 153770 byte(s) in 1 object(s) allocated from: #0 0x7fa249785330 in __interceptor_malloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xe9330) #1 0x7fa245c41e59 in WebPMuxAssemble /libwebp-0.6.1/src/mux/muxedit.c:628 #2 0x7fa245c4103e in WebPAnimEncoderAssemble /libwebp-0.6.1/src/mux/anim_encode.c:1562 #3 0x7fa2485774f9 in libwebp_anim_encode_frame libavcodec/libwebpenc_animencoder.c:68 #4 0x7fa24833a6ac in encode_simple_internal libavcodec/encode.c:214 #5 0x7fa24833a6ac in encode_simple_receive_packet libavcodec/encode.c:275 #6 0x7fa24833a6ac in encode_receive_packet_internal libavcodec/encode.c:309 #7 0x7fa24833abf8 in avcodec_send_frame libavcodec/encode.c:387 #8 0x7fa24833af1c in compat_encode libavcodec/encode.c:439 #9 0x7fa24833b1a5 in avcodec_encode_video2 (/usr/local/ffmpeg/lib/x86_64-linux-gnu/libavcodec.so.58+0x2bb1a5) ``` Signed-off-by: Andrey Volk --- libavcodec/libwebpenc_animencoder.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libavcodec/libwebpenc_animencoder.c b/libavcodec/libwebpenc_animencoder.c index 0f5b524335..29c0d8bb0f 100644 --- a/libavcodec/libwebpenc_animencoder.c +++ b/libavcodec/libwebpenc_animencoder.c @@ -70,14 +70,18 @@ static int libwebp_anim_encode_frame(AVCodecContext *avctx, AVPacket *pkt, ret = WebPAnimEncoderAssemble(s->enc, &assembled_data); if (ret) { ret = ff_get_encode_buffer(avctx, pkt, assembled_data.size, 0); - if (ret < 0) + if (ret < 0) { + WebPDataClear(&assembled_data); return ret; + } memcpy(pkt->data, assembled_data.bytes, assembled_data.size); + WebPDataClear(&assembled_data); s->done = 1; pkt->pts = pkt->dts = s->first_frame_pts; *got_packet = 1; return 0; } else { + WebPDataClear(&assembled_data); av_log(s, AV_LOG_ERROR, "WebPAnimEncoderAssemble() failed with error: %d\n", VP8_ENC_ERROR_OUT_OF_MEMORY);