From patchwork Mon Jun 29 13:23:10 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jun Zhao X-Patchwork-Id: 20714 Delivered-To: andriy.gelman@gmail.com Received: by 2002:a25:80ca:0:0:0:0:0 with SMTP id c10csp2814949ybm; Mon, 29 Jun 2020 06:30:46 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwNYnUhDhaP/DMilqW2SpMjVQjGeGPnNQ4YtVCgT7nEnOjdThSk6yMI0u80G6bn/BSZVJMV X-Received: by 2002:adf:b312:: with SMTP id j18mr16071178wrd.195.1593437446611; Mon, 29 Jun 2020 06:30:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593437446; cv=none; d=google.com; s=arc-20160816; b=o2Li77wVf2bWWZ5GUJLA2/+NLKKSihxvcBNhx/yRv18p8MuvUm/sNaF9HtAYCGu6D8 myht8m4fWQ+kHBXKj8Ex7y8gQ7ucHdmIQmhRN0Sfpc636y/TQw4OHsbTfDH8uE/Ke8ty DmFve4q/x4SbQh0QB55olwgxCO0py06ARWuV3PULYqjbS1JJ1bip1CeLhr2JZ/zCod9Z hLbl7pS1m9wZDZ1q+euKNYZ9/K7YV2mLqx3lDG1vjA8gCBSGc/nZJJZd/5vl8qsc9uTC cfq9dFBRIyEqzUtDpF1UMa3CtI90V3Pvx7k+oDZ4+MHKilbZnm0sNzKtzb5C4HrOuAVi /Eig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:dkim-signature :delivered-to; bh=/FiD5tQdFM1bFCwLWuHH9F+lzRazK4w0ogcegjUjgxg=; b=K97SeUA9cLz4MAXLT/JstQqeDO2XI7gshtXpH6ZerqWF7e5sJTjEJAvnNWaSrllMgM Zp+6i978rDyVkk7kcC+Eo1Ukd6XrhWrlYCFLKJK1NqLp1Og70Dz4tTY+egNUEmTLv/+c fwSa6plyoG5jemKOr3471YYSNvff9FZ4Q3neSreyfghVPHmuv8804G0mcPATFpT9+0x3 IJBeb/DboNh5S1BBjQ3ZdtZfrLWI4DcJPHA0yRENg4Sxfb8JXPmjplP06Nv0zZ5VaOij jrFmsqDn9XycQBgAZh1FL1rF7e/40qLXPxMkXjMUZ2MT7eqGSBGS4EjEN23qosfbcHmb kLMQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=jyQ4pjwr; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id x15si8186wmc.90.2020.06.29.06.30.46; Mon, 29 Jun 2020 06:30:46 -0700 (PDT) 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 header.s=20161025 header.b=jyQ4pjwr; 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=QUARANTINE 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 DEB09689AB3; Mon, 29 Jun 2020 16:30:42 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 93C36689AD2 for ; Mon, 29 Jun 2020 16:30:35 +0300 (EEST) Received: by mail-wr1-f65.google.com with SMTP id z13so16558707wrw.5 for ; Mon, 29 Jun 2020 06:30:35 -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; bh=1DZM+gGHBDZzr0HWMN/5u4aAKS6B0MoksuLPj7OAgqc=; b=jyQ4pjwrXatDuukfvy5HNsCoUNrey8IktBFyO1+HGHrTl/o83yilLpRApWoZAL+oeg jeYKzwV8Zl87nlN8Aw591WpEzl68dLlOmrSrwRJOrjUY2talu2DtqlvGfZQlDa2FNnFX rAMI/hv/ZcAYWcSF5wRKaU0uTSch0zKLv05+akU8/MOCZA2+fYwSdtmBDKAcZqCLiZkF 70NzrEmR24zX94MVwb6IPkkmRRVxm0wwUNZS7dWMakQpmPavTNeZQkZtO6F1RyFqnBrj D27cpVs0r1zFtEJkUp2FMW+pBXbkNP+5IfNWbbaH8SHrV9fI8xcKoZg3uPMvE9hV6Lis Yx2A== 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; bh=1DZM+gGHBDZzr0HWMN/5u4aAKS6B0MoksuLPj7OAgqc=; b=CZ4A6VjmOw22BURSlLfZQGWRaVZeHgoTD3e485zh1nvYctLh/3jTZkP38t+HoE9kyS MFl/6i/VE41XhrMwF7RcBvG52LJibi3Q/8TF+BFlBZaCZ7mrXrUHqqJcsL2uzDWB9K52 /we8JF+8BFAPTIMp1sNyKXpvZjYc32lVfUofC7y6lJCCPEfnzULdRYpbwkgR5KsZ7Iyt 6EbNdo8VDrNZuR2nXhfeRNlcigu21rzX5sT5nIKN73nv93fozOznl936HzJqGctVdmH7 rKi2S/9Y6TlMyv7ciHszgV6GOfGdGl8ofb+P5Ltd7nANJlTZFyhWjb9NObvkgzSTKYc/ f82A== X-Gm-Message-State: AOAM532W6qJ7i9Y7zyirOPvldSV2A5fz5KDBeQTR2pPxqucKqu0cSZ8e gtRyOjS+T6BLFzvF1F1qAEI2PlQM X-Received: by 2002:a5d:404e:: with SMTP id w14mr16715721wrp.268.1593436997004; Mon, 29 Jun 2020 06:23:17 -0700 (PDT) Received: from localhost.localdomain ([49.51.162.193]) by smtp.gmail.com with ESMTPSA id w128sm17644338wmb.19.2020.06.29.06.23.16 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 29 Jun 2020 06:23:16 -0700 (PDT) From: Jun Zhao To: ffmpeg-devel@ffmpeg.org Date: Mon, 29 Jun 2020 21:23:10 +0800 Message-Id: <1593436991-20076-1-git-send-email-mypopydev@gmail.com> X-Mailer: git-send-email 2.7.4 Subject: [FFmpeg-devel] [PATCH 1/2] lavc/aac_ac3_parser: fix the potential overflow 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: Jun Zhao MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: epm2SFNOn8nr Content-Length: 3125 From: Jun Zhao Fix the potential overflow. Suggested-by: Alexander Strasser Signed-off-by: Jun Zhao --- libavcodec/aac_ac3_parser.c | 9 +++++---- libavcodec/aac_ac3_parser.h | 4 ++-- tests/ref/fate/adtstoasc_ticket3715 | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/libavcodec/aac_ac3_parser.c b/libavcodec/aac_ac3_parser.c index 0746798..b26790d 100644 --- a/libavcodec/aac_ac3_parser.c +++ b/libavcodec/aac_ac3_parser.c @@ -98,11 +98,12 @@ get_next: } /* Calculate the average bit rate */ - s->frame_number++; if (avctx->codec_id != AV_CODEC_ID_EAC3) { - avctx->bit_rate = - (s->last_bit_rate * (s->frame_number -1) + s->bit_rate)/s->frame_number; - s->last_bit_rate = avctx->bit_rate; + if (s->frame_number < UINT64_MAX) { + s->frame_number++; + s->last_bit_rate += (s->bit_rate - s->last_bit_rate)/s->frame_number; + avctx->bit_rate = (int64_t)llround(s->last_bit_rate); + } } } diff --git a/libavcodec/aac_ac3_parser.h b/libavcodec/aac_ac3_parser.h index b04041f..c53d16f 100644 --- a/libavcodec/aac_ac3_parser.h +++ b/libavcodec/aac_ac3_parser.h @@ -55,8 +55,8 @@ typedef struct AACAC3ParseContext { uint64_t state; int need_next_header; - int frame_number; - int last_bit_rate; + uint64_t frame_number; + double last_bit_rate; enum AVCodecID codec_id; } AACAC3ParseContext; diff --git a/tests/ref/fate/adtstoasc_ticket3715 b/tests/ref/fate/adtstoasc_ticket3715 index 3b473ee..63e577a 100644 --- a/tests/ref/fate/adtstoasc_ticket3715 +++ b/tests/ref/fate/adtstoasc_ticket3715 @@ -1,4 +1,4 @@ -3e63cbb6bb6ec756d79fab2632fef305 *tests/data/fate/adtstoasc_ticket3715.mov +feb8a43e4b7df2a4763bd9d55153c900 *tests/data/fate/adtstoasc_ticket3715.mov 33324 tests/data/fate/adtstoasc_ticket3715.mov #extradata 0: 2, 0x00340022 #tb 0: 1/44100