From patchwork Fri Feb 23 00:46:13 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dale Curtis X-Patchwork-Id: 7714 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.150.33 with SMTP id c30csp49747jai; Thu, 22 Feb 2018 16:46:45 -0800 (PST) X-Google-Smtp-Source: AG47ELu7neL5AyZj7KEeVokKG1GjHifbIdQhex6kc95/sCQJDbSA9bMnvwEgrHEDI9yykAoFZIuA X-Received: by 10.28.51.12 with SMTP id z12mr200333wmz.16.1519346805412; Thu, 22 Feb 2018 16:46:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519346805; cv=none; d=google.com; s=arc-20160816; b=QTbyfcFfIb94ttOE2HNtnQrHBvqFQ0YBmGfARbYVypu57ZBkL6IvVLaPvxHGOSdI0O ESt6Y4OOxyhbzAGMsrfw679qQIWGWJqi/+rQeWRHM55C1IsQbLGvEsP+QBrSBOgTwSJe TbhJVaKGV7jiFPuzjcxFoj3FL7ZsQKYdL5SE3MXZoxt9iWYvoG2gTmrBhCa5wsL9T9Rm KPNN99xfDTDRm5ZsTNJCKTNmSbXVR72qFOIRiHNrkGFTm20ZjTtjz8XELto4FQOTfc/5 F+qJFAjaSpqEawIBRiWzwx5BQ2/UgU8ZzJBh87XHTeE6UBuWL4KV5gCOBL2H2qqNbQlg MY7w== 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:dkim-signature :delivered-to:arc-authentication-results; bh=v0cbf/KvOcdNtyfFkrBTwCnJRXHvpgqfAD9idDfbl0I=; b=UYBnhRuBAjrhtplybiV3mTQnR1qge2i8M04UJqT87+m2m0+jPCWRxeKOoHtTPb5+Zy iWwBEq/5RAfVE1sQNM9gmWGeYpfwc9W5I+aJTe9VIxril+e31b4rEv8vgZ9EZKqmaYNS wTARgB1EUw9ypkPICEZqEOoRqBNnmPI6ewyvq23ziTown8+5g2QxV6+9RCpWJNWIX4ij GgSmIFb38N/dlXFlMxEioqHBjw9zlNIeASZ1mT7gff7nJK34ck4KgRgTLxTvQONz6Du8 afJ4W/R4XBA06hVuMaDpop3sQymejLvtoEaWxkIBB5MlM/VRMuHvWrljBCGQaUWKp9f6 S67A== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@google.com header.s=20161025 header.b=vzU0Jk3u; dkim=neutral (body hash did not verify) header.i=@chromium.org header.s=google header.b=BnK9Uob0; 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=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id i67si422849wmc.259.2018.02.22.16.46.44; Thu, 22 Feb 2018 16:46:45 -0800 (PST) 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=@google.com header.s=20161025 header.b=vzU0Jk3u; dkim=neutral (body hash did not verify) header.i=@chromium.org header.s=google header.b=BnK9Uob0; 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=NONE dis=NONE) header.from=chromium.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5522668A5E3; Fri, 23 Feb 2018 02:46:41 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-yb0-f181.google.com (mail-yb0-f181.google.com [209.85.213.181]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6F09068A5B3 for ; Fri, 23 Feb 2018 02:46:34 +0200 (EET) Received: by mail-yb0-f181.google.com with SMTP id y190-v6so2340642yba.12 for ; Thu, 22 Feb 2018 16:46:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:sender:from:date:message-id:subject:to; bh=3o5RsVSFR0quJoSH5Uia0gxi8SXxIUmmrwfHYiiZjbA=; b=vzU0Jk3uIy/JQvL10RSSsrhd8EZiEAxABvOS+zTUT9fXGxP3eHU3KI+1df9po0eYoP 73vigbK4U0fcZk5gxSa5er7TW5Eixoq3aChkYezOM+AQZa4WDxhM09aKFtiwt+ZC19ju ADEoJ61BteP1JlmIXD6ye9mVyUo5ca4Z+MAh2N7AqhfuL9oCCz9eYUTz2oBIDVDriCxf i1DkezjFe647GptbSjgQSQYksYO0pU8/CbQnLSqDZyW1SPX+PDyNsHKmLulaiyXRKvaR Wnyo6m0HPYoKuFV9caiqbDiZlsJFk4WH8fbUka+WN2RFZxjsirhB6qt5rOjiLlvdNv23 kx4Q== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:sender:from:date:message-id:subject:to; bh=3o5RsVSFR0quJoSH5Uia0gxi8SXxIUmmrwfHYiiZjbA=; b=BnK9Uob0OIVM+YwfdnadDmTcoQh0Q77a08yaXGAzFtWXjV72Wx7f36T+cKFHKCqT5s xknImgC1zZGv2bQd6jcGuaHxWyCBfBpZJBFZSSFUdIm3avKJPgUZGLHyjecYVCf0znsz 55rt9n1wavXc2Zg1GoIgybzfmwtD3DWpHau2g= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:from:date:message-id:subject :to; bh=3o5RsVSFR0quJoSH5Uia0gxi8SXxIUmmrwfHYiiZjbA=; b=Xw2+ORYx6cM9Z2KEH+ttTWDAHD8eKVVCj/2K7zfXLL37jA1AmVPt7H+nhT+Yd5DbJu UO9nkD3bjNCKuGDrenhpvbraD3ZMeneaid0e9Dy0ccKWGuU4SqEgzMBEMV4GoNkr/ied qSWgAh7vjwXJK2a0RR4XDByUMmTW2oUSg/sPHi4eHVQWONsGM8RpnDsKQXKx/eI7Z377 NjTQugZ7od8SuHEy5aTGlKNQE8lk9iZJttF58kf5C2dYlWb4bHcgTF3wv0XMrXVCxF97 0fsijLKx+EFKCKhOb/bqg3qLo214/zI/AC46kpexojLLbFvim2z7Pezq+xvV7KXK7drE JbPA== X-Gm-Message-State: APf1xPCkHNT9KIMf2+OoJM4c0Z8sUvSzOn4bKgMP3b2tLDh+N6DuQGm8 0vSgRYMoWggft2ryhILLjuDHbrrSBQhnV3TGjtwhaK9IeB4= X-Received: by 2002:a25:a349:: with SMTP id d67-v6mr3309444ybi.455.1519346794454; Thu, 22 Feb 2018 16:46:34 -0800 (PST) MIME-Version: 1.0 Received: by 2002:a25:5f52:0:0:0:0:0 with HTTP; Thu, 22 Feb 2018 16:46:13 -0800 (PST) From: Dale Curtis Date: Thu, 22 Feb 2018 16:46:13 -0800 X-Google-Sender-Auth: NgTFplwGJyfs8MvBYKn-CHwHSIo Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.20 Subject: [FFmpeg-devel] [mpegaudio_parser] Skip trailing junk data when flushing parser. 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" The parser should only return valid mpeg audio packets; it generally does so, but in the case of flush, it returns whatever happens to be in the buffer instead of ensuring its first a valid mpeg packet. The fix is to check whether a valid frame size has been parsed and if not discard the packet when flushing. This should fix all sorts of mp3 files with trailing garbage. Signed-off-by: Dale Curtis From 1ede24ef6a0992dace2b86bd333cfd8044e64b93 Mon Sep 17 00:00:00 2001 From: Dale Curtis Date: Thu, 22 Feb 2018 16:43:37 -0800 Subject: [PATCH] [mpegaudio_parser] Skip trailing junk data when flushing parser. The parser should only return valid mpeg audio packets; it generally does so, but in the case of flush, it returns whatever happens to be in the buffer instead of ensuring its first a valid mpeg packet. The fix is to check whether a valid frame size has been parsed and if not discard the packet when flushing. This should fix all sorts of mp3 files with trailing garbage. Signed-off-by: Dale Curtis --- libavcodec/mpegaudio_parser.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/libavcodec/mpegaudio_parser.c b/libavcodec/mpegaudio_parser.c index 244281b56f..c6d843cd9f 100644 --- a/libavcodec/mpegaudio_parser.c +++ b/libavcodec/mpegaudio_parser.c @@ -115,16 +115,17 @@ static int mpegaudio_parse(AVCodecParserContext *s1, return buf_size; } - if (flush && buf_size >= ID3v1_TAG_SIZE && memcmp(buf, "TAG", 3) == 0) { - *poutbuf = NULL; - *poutbuf_size = 0; - return next; - } - - if (flush && buf_size >= APE_TAG_FOOTER_BYTES && memcmp(buf, APE_TAG_PREAMBLE, 8) == 0) { - *poutbuf = NULL; - *poutbuf_size = 0; - return next; + if (flush) { + if (!s->frame_size) + av_log(avctx, AV_LOG_DEBUG, "Discarding invalid trailing data.\n"); + + if (!s->frame_size || + (buf_size >= ID3v1_TAG_SIZE && memcmp(buf, "TAG", 3) == 0) || + (buf_size >= APE_TAG_FOOTER_BYTES && memcmp(buf, APE_TAG_PREAMBLE, 8) == 0)) { + *poutbuf = NULL; + *poutbuf_size = 0; + return next; + } } *poutbuf = buf; -- 2.16.1.291.g4437f3f132-goog