From patchwork Thu Oct 22 13:23:00 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "dont.buck@gmail.com" X-Patchwork-Id: 23149 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 26DAB44B251 for ; Thu, 22 Oct 2020 16:48:32 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E550A68A631; Thu, 22 Oct 2020 16:48:31 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf1-f193.google.com (mail-pf1-f193.google.com [209.85.210.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 662B768A5A8 for ; Thu, 22 Oct 2020 16:48:25 +0300 (EEST) Received: by mail-pf1-f193.google.com with SMTP id e10so1178631pfj.1 for ; Thu, 22 Oct 2020 06:48:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=clSLBN0ADrVyXc7jFryCGdaRJbI+jhLXZa61SRk9bps=; b=KvVb0bHb+mgc+Gsr49JK/umyUNdDoTecPgAtwCalXZqyg87jxUiWjLbFlWvaJSf2gf 8O76JuJY1BjAt7E/2a5oGAuPp9lk1H2/eP8zBzo4HstoxZyWPxJ2DeyeBqIRIy/eP3Z9 u7VQIhzvPhPosKMN+9ckmdnwQNwe2FVbvKHvKOSuB2weORQX2K9CcF9cgVJsf8c9+8vC 0GN+fdzcrurLazrgLfQpT7r7994NX9vzqgoiSvGmcZAXcQHi1v4Kz+DLLeepFiTWqyRQ ybC7urfSn/HxSkq+ENHoKsgLNktTPj0pMuQz9vk0rXlDNECgfOpwgEbDRww0tvPYcYM6 Frsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=clSLBN0ADrVyXc7jFryCGdaRJbI+jhLXZa61SRk9bps=; b=FIU4k2YnlSfBNATbA4O6u1oXUbCl/r8AiyGwsbBYwFapW5i777THH0OOPgM3n7mHHW +sUGv+n2zaT8PIrm9EmFQ3HW31GIKoSEPqEHQkByxQtt9aBhqoy1YX49hU7WRfZoyLrn R4sQTFZNN6a49ATxTVckSLQroRHoAe8sQGpnjoxcq5NV71ywT6ZIfIrs0hItQaAM3PUF 7PzzAUwP6m09/MvwqTod+Mo3AO7kWwuVNbksHiJo/m/+RHhEmdOTI0gXZMBFy2OUe+oM EZ/dngXGZkg4jF+zAv5Ac/ZNbTneakzMUzU4s7ffcxE2UvVHGiMnljAUMmOfa2864Z1b kfxw== X-Gm-Message-State: AOAM530SlOEvVMdUYebV77aoYQldqusLoKSpadwf8v2pnJkU58gCwlaJ cDrWHI5uU7Eqedg1cfx2avUGDIQoemRXAw== X-Google-Smtp-Source: ABdhPJxZejJr4iJVewDjes7hAm98q4tvvvBqxBy+BnA1SUiiDFKnBEUFrpclaZS5OyHbcnOhH/D7xA== X-Received: by 2002:aa7:9048:0:b029:152:883a:9a94 with SMTP id n8-20020aa790480000b0290152883a9a94mr2478134pfo.24.1603372988694; Thu, 22 Oct 2020 06:23:08 -0700 (PDT) Received: from IT00009725.localdomain ([203.90.233.36]) by smtp.gmail.com with ESMTPSA id c127sm2299759pfc.115.2020.10.22.06.23.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 22 Oct 2020 06:23:08 -0700 (PDT) From: dont.buck@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Thu, 22 Oct 2020 21:23:00 +0800 Message-Id: <20201022132300.1626-1-dont.buck@gmail.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avdevice/gdigrab: Memory leak if BitBlt return false. 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 Cc: walle Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: walle 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); }