From patchwork Thu Sep 19 03:09:34 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 15148 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 387BE44384E for ; Thu, 19 Sep 2019 06:11:20 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0F3F968A14B; Thu, 19 Sep 2019 06:11:20 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt1-f169.google.com (mail-qt1-f169.google.com [209.85.160.169]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2808C689BDC for ; Thu, 19 Sep 2019 06:11:14 +0300 (EEST) Received: by mail-qt1-f169.google.com with SMTP id c21so2377793qtj.12 for ; Wed, 18 Sep 2019 20:11:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=RzW6YOez93g3qZOic6BK/wWYCYgzAga6y3zdP2YB8iA=; b=axLJIcr9Iows+xDUltGubLsOmvQMISEMOfh9BXKHvhAEfevQCTQCyAuM38Pcbel1Bs 35eY6uZ9mGmVZPrAb8b9zp6zLSwmNEi+laQdgZBi4Gaq9dvyI21CudC/YvdfShqnAbuf AJfe7ZW0bjwgoIPzU96Q/Hzo7hcSXlXlXwK1x8VPIbNGnkwpXtTvHDlPQ+ONr6T0BqEs hS5qvhWY+7AHP5JBYJG6fcesJOWdm28uz70CZtbEXkmMUVFFtVj0jc5epsAT23yHRx1E hLvvPIdcOXHHbPQWZawrn196YYKLVQ0A+SGEZvyw45m6qFa3rwmk8IwxUfOwgJ/EbJPr cHkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=RzW6YOez93g3qZOic6BK/wWYCYgzAga6y3zdP2YB8iA=; b=aLKCln+wrUO3VnvhLWgzx9ZGD5aApJ1i7X763PReBhxoT6awi2xVXJNaYbZ6jVOZqo hH819w6a43ny+s68nLAGfc01dd42K0/3Te0KtnuKgJ24RM+R6If7q1P43V9E9u4Gq76c eIUZYyDMJRHOn7HX4lYCqOCd/CoujWYQYvCQGerMEpAbo4skzvveOpRhfvhf1Pm9JAmk oHoQ6T2RW2UlHi0PaiuEFOfbxDMS39Kf16I1QnVuNhGLHiHvLNxLxoYbXAk2MyUEhJiZ oafmvvGGlUU4EUTYCJ6LtuNbZ2UVkwXo7vnISKa2y6Wq7PME9N6bRopHB4JTp+Wk7ZXd pNWQ== X-Gm-Message-State: APjAAAVMUV5d2vYez1p0QA3ozzCkM1tZQCuO5cj5kzNiACirHIaON2cJ IXE/e64JYpNCRd3L2vRZHCXK4pYwPQU= X-Google-Smtp-Source: APXvYqzCSq59Tk5YMDNx4OVrDepWABeFdJomcu7VNiMTUlY9lHewUybjQAk2CmZdBcUd00wsbX5GkQ== X-Received: by 2002:ac8:3871:: with SMTP id r46mr1007239qtb.267.1568862672397; Wed, 18 Sep 2019 20:11:12 -0700 (PDT) Received: from localhost.localdomain ([191.83.209.38]) by smtp.gmail.com with ESMTPSA id 139sm4262790qkf.14.2019.09.18.20.11.11 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Sep 2019 20:11:11 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 19 Sep 2019 00:09:34 -0300 Message-Id: <20190919030934.12883-1-jamrial@gmail.com> X-Mailer: git-send-email 2.22.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avformat/utils: unref packet on AVInputFormat.read_packet() failure X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" Demuxers may have allocated a packet before encountering an error and aborting. Fixes ticket #8150 Signed-off-by: James Almer --- It may also fix other tickets as well, since i recall seeing other reports about leaks in ff_read_packet() on malformed input in the past, but i can't remember which. libavformat/utils.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libavformat/utils.c b/libavformat/utils.c index 3983a3f4ce..215cbe6df8 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -854,6 +854,8 @@ int ff_read_packet(AVFormatContext *s, AVPacket *pkt) av_init_packet(pkt); ret = s->iformat->read_packet(s, pkt); if (ret < 0) { + av_packet_unref(pkt); + /* Some demuxers return FFERROR_REDO when they consume data and discard it (ignored streams, junk, extradata). We must re-call the demuxer to get the real packet. */