From patchwork Sat Sep 28 17:54:25 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 15365 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 5A64C448113 for ; Sat, 28 Sep 2019 20:54:54 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 35E5E6883E0; Sat, 28 Sep 2019 20:54:54 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f67.google.com (mail-wr1-f67.google.com [209.85.221.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B9FC3688170 for ; Sat, 28 Sep 2019 20:54:47 +0300 (EEST) Received: by mail-wr1-f67.google.com with SMTP id n14so6492462wrw.9 for ; Sat, 28 Sep 2019 10:54:47 -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=QE3rwO3oXgyzOSkEJ64uc4X97biMEBcr4MsGhXGi7Os=; b=cnQnuk7c5m7uD2olUtsA1EPS36YI5CLhifPUSmFQoHVR98Rl9x5SrPnsV49UcHgMk2 XG2IxTg1yMDvrvyldd+jKi1UxxnbGB2oe+uOfQfCjKCpr4VTJAeSGqZ75O9lGt+yJn++ rlJAixwJzoGpG9QUtfod0i5dYkH/aLeafaetoqtytrmlRmdoV5KQWuSZpRsprxvODCDw Ri7HK5J6xLAamqOQsTegVWq5Exvn4yKXSyEIGAwS/trpDnPQEWG+j5PxO2vBIBk3upaT yZy5mj1y4iWxQdRuf7OzkO9mEwhBzcpbImSDkUi5pHarjyDIKu1QApGI350oaLq87lQ5 YFIg== 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=QE3rwO3oXgyzOSkEJ64uc4X97biMEBcr4MsGhXGi7Os=; b=bZGMkP+1BeNSVHxa9RwlcPnTyAcvg5djfUwj9vQwDp6gZAa8W/sbg8hqsTk6FcRhg6 qvAfveH3qCsL78S57Z26FSV92zukPQ9vPN72GFrwtq9H8Og/myrRTi+FBlUBNRpHG9FA iXc9fyEKyV7dC6Q2ngOH5B4SNlfsN7QbjovLWiZiyz7nUjOn7lH8hUSjGquDPHGVeNQ+ u+2o+wK6Bt8IEuKpzrnWgqme5tRTeW6xcw0qj6+vi8gJRavvwMHdWgvdQDC84GB7qGxj 6Adu6LukJYLSVtZdlH0JuBp4Ws1imfhgGQjaPSJbEskAg0W806fqX24hexF15ZAfk95B 57NA== X-Gm-Message-State: APjAAAWqFsBFBCI0lNYry6Cx44u54fmEFFgxj5w9iOXaDwgV9w3B4zpu gpnlRCpJcn6yrv5pipkU3ZPFbUda X-Google-Smtp-Source: APXvYqwjQN5p+wTBWn6UnNLA8YALQOqnf1Bm+sw7FmTamUJ0gOtFQJ7vtjr3QSmjC/l+XTQiWZG0KA== X-Received: by 2002:a5d:4646:: with SMTP id j6mr6913587wrs.173.1569693286993; Sat, 28 Sep 2019 10:54:46 -0700 (PDT) Received: from localhost.localdomain (ipbcc0f857.dynamic.kabel-deutschland.de. [188.192.248.87]) by smtp.gmail.com with ESMTPSA id h7sm5572980wrt.17.2019.09.28.10.54.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 28 Sep 2019 10:54:46 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 28 Sep 2019 19:54:25 +0200 Message-Id: <20190928175425.59386-1-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.21.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avformat/matroskadec: Fix demuxing ProRes 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" The structure of a ProRes frame in mov/mp4 is that of a typical atom: First a 32 bit BE size field, then a tag detailling the content. Said size field includes the eight bytes of the atom header. This header is actually redundant, as the size of the atom is already known from the containing atom. It is therefore stripped away when muxed into Matroska and so the Matroska demuxer has to recreate upon demuxing. But it did not account for the fact that the size field includes the size of the header and this can lead to problems when a decoder uses the in-band size field. Fixes ticket #8210. Signed-off-by: Andreas Rheinhardt --- libavformat/matroskadec.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 10c398856b..a5f120b54d 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -3280,15 +3280,16 @@ static int matroska_parse_prores(MatroskaTrack *track, uint8_t *src, int dstlen = *size; if (AV_RB32(&src[4]) != MKBETAG('i', 'c', 'p', 'f')) { - dst = av_malloc(dstlen + 8 + AV_INPUT_BUFFER_PADDING_SIZE); + dstlen += 8; + + dst = av_malloc(dstlen + AV_INPUT_BUFFER_PADDING_SIZE); if (!dst) return AVERROR(ENOMEM); AV_WB32(dst, dstlen); AV_WB32(dst + 4, MKBETAG('i', 'c', 'p', 'f')); - memcpy(dst + 8, src, dstlen); - memset(dst + 8 + dstlen, 0, AV_INPUT_BUFFER_PADDING_SIZE); - dstlen += 8; + memcpy(dst + 8, src, dstlen - 8); + memset(dst + dstlen, 0, AV_INPUT_BUFFER_PADDING_SIZE); } *pdst = dst;