From patchwork Mon May 11 16:35:00 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thierry Foucu X-Patchwork-Id: 19632 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 2DC5844B13F for ; Mon, 11 May 2020 20:06:09 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 112B2687F2F; Mon, 11 May 2020 20:06:09 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-il1-f181.google.com (mail-il1-f181.google.com [209.85.166.181]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B247368089B for ; Mon, 11 May 2020 20:06:02 +0300 (EEST) Received: by mail-il1-f181.google.com with SMTP id x2so9297682ilp.13 for ; Mon, 11 May 2020 10:06:02 -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=g6utfhZnpJe/7/3GxgQRoMTWpkc79V+x56B8nPttI8Q=; b=AgWcOvFxpYolSkiPF/u7N9wETQqzHPxFK19Uy52jqpbIZtXRmjRZxYtz9u7IkXLqVx NUGTd9Z0zMe0NxEXLp8Gbs/h/NbUdT87esC/+rEJEUr2cgXPTl2mGeCRLb2t3teE3pVd 9hFFG84QJIm1gidR4BDFb7SGUWGAL2kXarZ2bR97MLLeLud2qiWcXj5rGFmJnZHKp3z9 ol/4jj7KBp96YaH4HPQw7b0Z66+eKSFv84YcJsH37B7a5Ct0GRJZxdMN2IC777pd6Mj4 Img659My557S35nZ0157Ft7GLxXGl932cYmV5FZ8hyTC7FE4lZyp1dn9aLXvpGhIyZoa 6ZAg== 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=g6utfhZnpJe/7/3GxgQRoMTWpkc79V+x56B8nPttI8Q=; b=LnWgVAshLTvNVcWjDorEl5gtpuvGlfWtZKNfY1Na5Iv3VCAFjA4fWvRzxoWwYg0Y0o qZo2jAQoecy8QpLEmHgWj6+axfTiWyEh22ic7UP/yEkkE7Wah4rhui8LPknZMovtpQ90 7q725GMle6ciu2KCqKiwqbkiKF3Hq88i8OK14zgVaTJe3rhBla9jzMAe4bN9oFwbqGqr 9v3zDU+WLwKorNmC9r2khmj6LG0FQG4xUHw8tudVvL+yViFeXLa2C27u5BUTYE8wFb8Y 4G7pANjNmJCcfEzHc8tVcFsdxOgRzF+Ang84FySDB2BQVMRfWyLLaf1+DLRoq1cjI7P4 W7bw== X-Gm-Message-State: AGi0PuZqZhFos5AtDPfkcNMCIT07exwYOIB3U4Y0EN1eThw0rNY6FFyP SMaTtX9oyrTGA8wc5sDehqTIkbrs X-Google-Smtp-Source: ABdhPJxkFDoR2/rb0+u3GyzXfbLSFP5Eq5PFy9kIA87ju1BsrODS9KXub5d/Co6WTGpGXbUrII860g== X-Received: by 2002:a63:3c0a:: with SMTP id j10mr5067221pga.35.1589214903700; Mon, 11 May 2020 09:35:03 -0700 (PDT) Received: from tfoucu.mtv.corp.google.com ([2620:0:1000:4001:8e18:4d51:fb1:d54f]) by smtp.gmail.com with ESMTPSA id z28sm9587464pfr.3.2020.05.11.09.35.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 May 2020 09:35:03 -0700 (PDT) From: Thierry Foucu To: ffmpeg-devel@ffmpeg.org Date: Mon, 11 May 2020 09:35:00 -0700 Message-Id: <20200511163500.144007-1-tfoucu@gmail.com> X-Mailer: git-send-email 2.26.2.645.ge9eca65c58-goog MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] [libavformat/mov.c] Read the QT Metadata Keys only once 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: Thierry Foucu Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" If you have a file with multiple Metadata Keys, the second time you parse the keys, you will re-alloc c->meta_keys without freeing the old one. This change will avoid parsing all the consecutive Metadata keys. --- libavformat/mov.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libavformat/mov.c b/libavformat/mov.c index ad718cdaa2..062a62d93b 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -7022,7 +7022,8 @@ static int mov_read_default(MOVContext *c, AVIOContext *pb, MOVAtom atom) // https://developer.apple.com/library/mac/documentation/QuickTime/QTFF/Metadata/Metadata.html if (!parse && c->found_hdlr_mdta && atom.type == MKTAG('m','e','t','a') && - a.type == MKTAG('k','e','y','s')) { + a.type == MKTAG('k','e','y','s') && + c->meta_keys_count == 0) { parse = mov_read_keys; }