From patchwork Thu Nov 7 16:16:22 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Wang X-Patchwork-Id: 16155 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 2BFBB44AA0D for ; Thu, 7 Nov 2019 18:16:36 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0A11868A3D3; Thu, 7 Nov 2019 18:16:36 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pl1-f194.google.com (mail-pl1-f194.google.com [209.85.214.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1772868A115 for ; Thu, 7 Nov 2019 18:16:30 +0200 (EET) Received: by mail-pl1-f194.google.com with SMTP id k7so1818636pll.1 for ; Thu, 07 Nov 2019 08:16:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=8ZCKOkJm+l258fQQgx00t+jBl3SEsZFmnN4BCA6B5rU=; b=Qsxl9auxBD1pWSrPp9eCclfwFnd1vBIsVEsnFp+8X/hOaUPMDO3AbTpF0MQZmsgUgt Ca4+XkAEjfMYNAOl/emh3OIsaE1L8OAcpp05+lmducD8sK75vqa6pSK4NY9l1HlxqnP8 /BsmlWYHEeWriJCvFpbW9ipyOZ+lGR802lcL62aYeJf/nuG1R4NqATAH/I0vd/D5avxo XceVjU26H8POjLLePtjQKs432+Ap+nwn5VrA69uZyeRUeWvJ48jDtlUEYI3VHVuTs3T7 2Q7gwluT9FDxCzAOSmWmxcWln77ChUAWlFA9yvNqFAyXXme/Xm3q/0gasPOb1bBRXH0C d8wg== 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:in-reply-to :references; bh=8ZCKOkJm+l258fQQgx00t+jBl3SEsZFmnN4BCA6B5rU=; b=SZz2Dlsp3hrargBJGA6msIK674fvygNdTBnyEdCUTqxWkobw3CFBKznmcehMY7tiL7 y/rD1MNLrBnXd1rv6tWs1FH5zAYwNLQ9S1Qq6q1l253u6NuGEYaIfA0qjfsE8oR0IgUc rv2SUA9YOyMuvQdj10Dk5HK2hZRxs5wOzloqf1U1wXLR+qHEwZ5SIbdga44yYlLTDupu 8k85XPHhZQhc5ojpHvo2+Oaw+sueZk0QRjpDZQZxcb5+IcJze6WdZ0i3cf+joSd9tR3r W3Cp7BW3Ucqbe8I6GdHoexPA9cFStcYnaY/TMn6tm0SGAk3ToTH8sLHY7OO5f+7DAJgv jOtA== X-Gm-Message-State: APjAAAWw70evj7jP5ttRlcn+zhB1H2NYFcPvoZ6suT6WnzaiEu9UMvcA 5Ls/F64axGJJwJdq99LqDaF4coatBrs= X-Google-Smtp-Source: APXvYqw9sTNYxxrx2j7G0yNV9HU7vU/VX7fj3/oq9G8PAn+UVXPPwCRAI+8SnP3HQd3dEWf/7nFqbw== X-Received: by 2002:a17:90a:970a:: with SMTP id x10mr33264pjo.39.1573143388028; Thu, 07 Nov 2019 08:16:28 -0800 (PST) Received: from vpn.localdomain ([47.90.99.151]) by smtp.gmail.com with ESMTPSA id q34sm3163313pjb.15.2019.11.07.08.16.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 07 Nov 2019 08:16:27 -0800 (PST) From: lance.lmwang@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Fri, 8 Nov 2019 00:16:22 +0800 Message-Id: <20191107161622.27855-1-lance.lmwang@gmail.com> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20191029094520.30679-1-onemda@gmail.com> References: <20191029094520.30679-1-onemda@gmail.com> Subject: [FFmpeg-devel] [PATCH v4] avformat/mp3dec: Fixes misdetection of zYLx.wav 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: Limin Wang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Limin Wang Signed-off-by: Limin Wang --- By Hendrik comments, I have proposal a more general fix for more common case. Now It's only tested with fate and all samples in: http://samples.ffmpeg.org/A-codecs/MP3-pro http://samples.ffmpeg.org/A-codecs/MP3 libavformat/mp3dec.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/libavformat/mp3dec.c b/libavformat/mp3dec.c index 258f191..551aa56 100644 --- a/libavformat/mp3dec.c +++ b/libavformat/mp3dec.c @@ -73,7 +73,8 @@ static int mp3_read_probe(const AVProbeData *p) int frames, ret; int framesizes, max_framesizes; uint32_t header; - const uint8_t *buf, *buf0, *buf2, *end; + uint32_t next_sync; + const uint8_t *buf, *buf0, *buf2, *buf3, *end; buf0 = p->buf; end = p->buf + p->buf_size - sizeof(uint32_t); @@ -93,6 +94,16 @@ static int mp3_read_probe(const AVProbeData *p) ret = avpriv_mpegaudio_decode_header(&h, header); if (ret != 0) break; + + buf3 = buf2 + 4; + while (buf3 < end) { + next_sync = AV_RB32(buf3); + if ((next_sync & MP3_MASK) == (header & MP3_MASK)) + break; + buf3++; + } + if (buf3 - buf2 != h.frame_size) + break; buf2 += h.frame_size; framesizes += h.frame_size; }