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 From patchwork Mon Jun 29 13:23:11 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jun Zhao X-Patchwork-Id: 20736 Delivered-To: andriy.gelman@gmail.com Received: by 2002:a25:80ca:0:0:0:0:0 with SMTP id c10csp2810168ybm; Mon, 29 Jun 2020 06:23:30 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwkwqGfVXTQvjNlof4EJktxYqI4Qsw7lk0Dq1zFhgkzn5hCRwUPoDQjEL3c1b4w+9ZB+sYw X-Received: by 2002:a5d:56c7:: with SMTP id m7mr16724789wrw.223.1593437010699; Mon, 29 Jun 2020 06:23:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593437010; cv=none; d=google.com; s=arc-20160816; b=q1eZ7bH31JHhx5yi07TLgLzExMlab2w2wnQC0LR1D5jpTMF6jAD7tRJBl0LD5Jhuxf 5LlXbVh53j+jrEIGVx7B01z2kYlRV8hRjXrtMvCe9gAct1y/xguXPcqIJutZMHt+EBWk 7dszhv57vpmzA1A9DKHGvgqOJL5PEJ1WlntEqtvGtWtSmyq/yLofHOzy+PuEEeI1503o LEMlIjwRV80F4Z49kh2FrD0DP7vrFVe7KclR/FKA1kGq1ugeDhocEmZG00nyQWgNHSBY 33yQ7/4V4BGHalRrdUNwBUrT1lALw4SvzrJIBkjor1+vdrv1mxf33VUlA0KXcjXuZ91c 1+hw== 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:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to; bh=aMz8AX8pwrddd3myCl481TaM+FiiEQWZgobMgzVrA5Y=; b=QZoJ/dF+PE6nU+Tsn1hLHCh8j0PtWFT7JpUZZ15Rs1i2GhzE6uHf5PCaDOwd8Kl0ey 40KpU2TGjGuZubuzHaca8vWhqVl5e8Pa//1Ml1Z2RNxbXsKoZ5V66yxctE+Uv2pkFSuo nrICRZGxIsii0lRvaJHHFmbHPuP8JhXzqO2HArJC/KvHHLYU7WsXvmBqDIyd33n3gWJl 7n/wrZrHslUq8hE6tB6BuABoMY7BT+RK8FsNq2PLlOc1NZt+W7Rig2UNiphN9GBjqM4E d7u/rGzYmivmgH36jSrBzCjBKL1ePw/IfF8VI7Ex+sm37zF37RPDOSdAe2WLVRuJNzHd d0kQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=dQDVQRfr; 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 31si15786433wrs.144.2020.06.29.06.23.29; Mon, 29 Jun 2020 06:23:30 -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=dQDVQRfr; 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 3782868A295; Mon, 29 Jun 2020 16:23:28 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f66.google.com (mail-wm1-f66.google.com [209.85.128.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8926068A0BE for ; Mon, 29 Jun 2020 16:23:21 +0300 (EEST) Received: by mail-wm1-f66.google.com with SMTP id j18so15371910wmi.3 for ; Mon, 29 Jun 2020 06:23:21 -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:in-reply-to:references; bh=+7/TJVt06Od250PZoLGP5HesF9K4q58RIUXLFCgeVs8=; b=dQDVQRfrimUQMGHms7+yhkIOaFizV7xTa9c2yOHgd3UmNUH7MaY/MN+F11DU8HIhGw Ye9ubrioi+QGdEqsvMTqBDDmulDTj4apPDVqnZijmXJaeD7QI8uxQ3d6qmoz21iF+a8f dsi4sxCJDygJy3Cuo61wzIufmBnsyc857Mh2e2Lsyx0NfuJ/i2D6CQNuOQ/t21NQEDt1 vTyWq72lVOExuwzrPQo0ictjDx5mD3KwnTiWVEImGYTvhleqkpvh5zbjFkU6mXkkVPIk /PRInQ6GFXuBp0gv0zsuwndoHr28cld0WHpFeVz+B1viI80kl7rvBPS5PVss6n/zmyFY o+IQ== 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=+7/TJVt06Od250PZoLGP5HesF9K4q58RIUXLFCgeVs8=; b=gNv9yUFcFJeOOjwvRKTaNpiJd+2OxX4/QrPjsyCqNARI7QmkAXYZzXYNV2aHAPp8L6 RxfW12GJouJAZVG4i49qiZdm4/4Iw5AJxe5Byr0qWtAyUR602KobYa3qtbpeN5P3Wegc VxxDYq/Nf+2HOOFpYfSap6/SEZq2m6fTUOvKMsvgkZukfG86bwVNa+khu24aNXcsPa5h ULKjvpWhcbdgP1HisT8ZCcnxcPiYaMmqPogAqjryswIcDSLwcZXJ9/zGW8ocEdUMzSQ2 OrK/TavVlDUWc3LiyaevyPWbMwSqwYf07x8WgYboYr1XefSlBlCkq9ZvbbHhkRn0Xxo5 QkIQ== X-Gm-Message-State: AOAM5309wC3QWqiVvnV1dn/h/vKhpIP3va+gmVpN8gJl2r4Ni4hz6jOw itiszmgPlmAzjVNwVqOeA5NwxXx5 X-Received: by 2002:a1c:2d0d:: with SMTP id t13mr1530293wmt.43.1593436997834; 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.17 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 29 Jun 2020 06:23:17 -0700 (PDT) From: Jun Zhao To: ffmpeg-devel@ffmpeg.org Date: Mon, 29 Jun 2020 21:23:11 +0800 Message-Id: <1593436991-20076-2-git-send-email-mypopydev@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1593436991-20076-1-git-send-email-mypopydev@gmail.com> References: <1593436991-20076-1-git-send-email-mypopydev@gmail.com> Subject: [FFmpeg-devel] [PATCH 2/2] lavc/aac_ac3_parser: Cosmetics 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: zD8wA1MsQ0qn Content-Length: 3470 From: Jun Zhao Signed-off-by: Jun Zhao --- libavcodec/aac_ac3_parser.c | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/libavcodec/aac_ac3_parser.c b/libavcodec/aac_ac3_parser.c index b26790d..23c60f6 100644 --- a/libavcodec/aac_ac3_parser.c +++ b/libavcodec/aac_ac3_parser.c @@ -37,37 +37,36 @@ int ff_aac_ac3_parse(AVCodecParserContext *s1, int got_frame = 0; get_next: - i=END_NOT_FOUND; - if(s->remaining_size <= buf_size){ - if(s->remaining_size && !s->need_next_header){ - i= s->remaining_size; + i = END_NOT_FOUND; + if (s->remaining_size <= buf_size) { + if (s->remaining_size && !s->need_next_header) { + i = s->remaining_size; s->remaining_size = 0; - }else{ //we need a header first - len=0; - for(i=s->remaining_size; iremaining_size; istate = (s->state<<8) + buf[i]; - if((len=s->sync(s->state, s, &s->need_next_header, &new_frame_start))) + if ((len=s->sync(s->state, s, &s->need_next_header, &new_frame_start))) break; } - if(len<=0){ - i=END_NOT_FOUND; - }else{ + if (len <= 0) { + i = END_NOT_FOUND; + } else { got_frame = 1; - s->state=0; + s->state = 0; i-= s->header_size -1; s->remaining_size = len; - if(!new_frame_start || pc->index+i<=0){ + if (!new_frame_start || pc->index+i <= 0) { s->remaining_size += i; goto get_next; - } - else if (i < 0) { + } else if (i < 0) { s->remaining_size += i; } } } } - if(ff_combine_frame(pc, i, &buf, &buf_size)<0){ + if (ff_combine_frame(pc, i, &buf, &buf_size) < 0) { s->remaining_size -= FFMIN(s->remaining_size, buf_size); *poutbuf = NULL; *poutbuf_size = 0;