From patchwork Fri Dec 16 13:19:45 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Ronald S. Bultje" X-Patchwork-Id: 1838 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.65.86 with SMTP id o83csp1328578vsa; Fri, 16 Dec 2016 05:28:03 -0800 (PST) X-Received: by 10.194.75.227 with SMTP id f3mr2670077wjw.19.1481894883524; Fri, 16 Dec 2016 05:28:03 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id lb9si6998115wjc.242.2016.12.16.05.28.01; Fri, 16 Dec 2016 05:28:03 -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=@gmail.com; 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 dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 907EE689BCF; Fri, 16 Dec 2016 15:27:53 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk0-f195.google.com (mail-qk0-f195.google.com [209.85.220.195]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9631E680A7D for ; Fri, 16 Dec 2016 15:27:46 +0200 (EET) Received: by mail-qk0-f195.google.com with SMTP id n204so11463687qke.2 for ; Fri, 16 Dec 2016 05:27:53 -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=tSUVd84rMMKSx2UIWo/fcueP/Zh438RAbytOwUV4jhY=; b=p1/a3I1fzRXvD23VPprrIa4HnZh7KAQn5onG6eXgg9TOb27BA4MjYLnFUl3KR+0Nn0 2e6f8YQv1IK4dI4w9Z4fdNqWnNCxvj3B+sEdac0e+TI1J9ApznMvqvP9G8wIvKGXLKQ2 6/s1LKQA3Lg9M+iC7Y2kt1K7iec07tjboUyktuTq+DIJZZylEbQdUaXxcJ/SFyIUOUIW uammARkMgkKLlzu198Tc0SSi5g1Cm8NTJyWIv7MgltQPnZyc4TTHQx0i/KpOdrmJbRql jhaqBf0ACHc5gT6LpO6KOjPnzOeUC2JC6mI2YuYkKzUGbhVwGENZwRzM/TZybeogx9mF MOow== 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=tSUVd84rMMKSx2UIWo/fcueP/Zh438RAbytOwUV4jhY=; b=ZVnfwMIBs+07109kHeekS3lKQkI6CrZgb9cQBko26wGSN4Fd7wvp9vAbIUhQDGZSSn X7kG42T9xJOofp5mIhu1xRDV0T1RVFdNaAE1lltd5euUF9wapl4HUuFhSxb/iD/PcCFk jhIdsbdbAsAN5aT+/UiB3BFliWFIgnHmoDcWRiBMg9OlPdVdboWUQq8fJ5VB/Av0HySX H91ueagpMrNzEGdussD9XMKdFHhqf4916Dyi013huZnVGSUmi7dYeiXjntBYwqRmk2Mq HSMSdNTEDrxRfk7HL9fHENgAjZbSY9Vv8iVhtemAPv8HnlMRh7cXCCGwqDGURijo7KLe uBDQ== X-Gm-Message-State: AIkVDXK0l9d4Lw3bVz4ybOEbaqZPqKNWbTak4j2baMBTaL+wshAPThwCV8IKhRn72txnOg== X-Received: by 10.233.221.130 with SMTP id r124mr2543863qkf.183.1481894390712; Fri, 16 Dec 2016 05:19:50 -0800 (PST) Received: from localhost.localdomain ([65.206.95.146]) by smtp.gmail.com with ESMTPSA id 30sm3663720qth.14.2016.12.16.05.19.49 (version=TLS1 cipher=AES128-SHA bits=128/128); Fri, 16 Dec 2016 05:19:50 -0800 (PST) From: "Ronald S. Bultje" To: ffmpeg-devel@ffmpeg.org Date: Fri, 16 Dec 2016 08:19:45 -0500 Message-Id: <1481894385-64104-2-git-send-email-rsbultje@gmail.com> X-Mailer: git-send-email 2.8.1 In-Reply-To: <1481894385-64104-1-git-send-email-rsbultje@gmail.com> References: <1481894385-64104-1-git-send-email-rsbultje@gmail.com> Subject: [FFmpeg-devel] [PATCH 2/2] wmavoice: don't error out if we're skipping more bits than available. 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: "Ronald S. Bultje" MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" This reverts 2a4700a4f03280fa8ba4fc0f8a9987bb550f0d1e and implements it correctly so streams actually decode the way the encoder intended them to. --- libavcodec/wmavoice.c | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/libavcodec/wmavoice.c b/libavcodec/wmavoice.c index 0f29bdd..f1b5369 100644 --- a/libavcodec/wmavoice.c +++ b/libavcodec/wmavoice.c @@ -1900,16 +1900,10 @@ static int wmavoice_decode_packet(AVCodecContext *ctx, void *data, cnt += s->spillover_nbits; s->skip_bits_next = cnt & 7; res = cnt >> 3; - if (res > avpkt->size) { - av_log(ctx, AV_LOG_ERROR, - "Trying to skip %d bytes in packet of size %d\n", - res, avpkt->size); - return AVERROR_INVALIDDATA; - } - return res; + return FFMIN(avpkt->size, res); } else - skip_bits_long (gb, s->spillover_nbits - cnt + - get_bits_count(gb)); // resync + skip_bits_long(gb, s->spillover_nbits - cnt + + get_bits_count(gb)); // resync } else skip_bits_long(gb, s->spillover_nbits); // resync } @@ -1926,13 +1920,7 @@ static int wmavoice_decode_packet(AVCodecContext *ctx, void *data, int cnt = get_bits_count(gb); s->skip_bits_next = cnt & 7; res = cnt >> 3; - if (res > avpkt->size) { - av_log(ctx, AV_LOG_ERROR, - "Trying to skip %d bytes in packet of size %d\n", - res, avpkt->size); - return AVERROR_INVALIDDATA; - } - return res; + return FFMIN(res, avpkt->size); } else if ((s->sframe_cache_size = pos) > 0) { /* rewind bit reader to start of last (incomplete) superframe... */ init_get_bits(gb, avpkt->data, size << 3);