From patchwork Mon Dec 12 23:49:49 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Cadhalpun X-Patchwork-Id: 1768 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.65.86 with SMTP id o83csp1928719vsa; Mon, 12 Dec 2016 15:50:00 -0800 (PST) X-Received: by 10.194.52.8 with SMTP id p8mr54411688wjo.38.1481586600477; Mon, 12 Dec 2016 15:50:00 -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 y84si30856695wmg.11.2016.12.12.15.50.00; Mon, 12 Dec 2016 15:50:00 -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=@googlemail.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=QUARANTINE dis=NONE) header.from=googlemail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 82F50689FC7; Tue, 13 Dec 2016 01:49:53 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wj0-f196.google.com (mail-wj0-f196.google.com [209.85.210.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E68E6689AEA for ; Tue, 13 Dec 2016 01:49:46 +0200 (EET) Received: by mail-wj0-f196.google.com with SMTP id xy5so13984937wjc.1 for ; Mon, 12 Dec 2016 15:49:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20120113; h=from:subject:to:references:message-id:date:user-agent:mime-version :in-reply-to:content-transfer-encoding; bh=QwJYDxzzoRVPM8QiBnQ3/VZCy5rCB7LWMMGvOAjvAm8=; b=oTmvpISze4sn+3H26qWL48rrM4h3x/vDAeKn+rPMBglxW6eouQcvkXF1X3ykacvkNe xMs1kHaSxHOnWg48qnPATW2Y5EdTih8RjNuA3dr1BWA1L/yRlO13M/ax9PKK9cm9mD6p 0vvGoGT8BoLb11XFUIYRBvpz6tzUd592efJwC6UHt0eUwg5vUkBxJfUwvIgwwZMUW10E i7lXWlyh4io6ol4oYZKYgOva96X5rVtW1tGMLnCj7Jeyml7JcLJTB+KCblcpUvIf1joX SKKRLBfUiyHvYhfhfp0k3vi6xqe0KcrJv6c6j5hYOOAyMXtLZ1qNsRWkCoNmEPEKG2X/ /LJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:subject:to:references:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=QwJYDxzzoRVPM8QiBnQ3/VZCy5rCB7LWMMGvOAjvAm8=; b=csyXMiINqt6rTIBdR13keaJ6ya9x7DWJUSd1IKpuu4KjCbQzPER9kmjAh+3x95x8Su 7XTiq7lo+cXmTUSrTYK3GpCzzEgd+r/WdFc66gN5OxGi8iDfkdz2DbeAT3OWqfHenL2X znCCcGp18c/tX6U4F0axNwDkta56jOpcaArOy43JGIXWdX+s+wxye2kvi2p0ipkufwyB FfPgPc0e2jLx0QHavxy4HwpiBtUnEq/fYrpXK53peYlVDdD06JAowCLv3FQqpYZVUMKO pQuMYVzJ1GbvypX5YnOTqFG0gkqSJ7Ckxgr5abys+FQDPIDjG1kIGMhorkyi8GprM03n 8Z4Q== X-Gm-Message-State: AKaTC00CU21kcLLSgglceDkQOhwfE0P83+AXyyHKuafMkoOAzjqM6tAatliEJ2yfGIQrhw== X-Received: by 10.194.87.103 with SMTP id w7mr58084727wjz.164.1481586591416; Mon, 12 Dec 2016 15:49:51 -0800 (PST) Received: from [192.168.2.21] (p5B095619.dip0.t-ipconnect.de. [91.9.86.25]) by smtp.googlemail.com with ESMTPSA id r138sm37798703wme.9.2016.12.12.15.49.50 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Dec 2016 15:49:51 -0800 (PST) From: Andreas Cadhalpun X-Google-Original-From: Andreas Cadhalpun To: FFmpeg development discussions and patches References: <18a6d792-ed50-8963-ccfd-8c585824682f@googlemail.com> Message-ID: <0fbc6790-e047-5e9a-cd70-8793f75ebcd0@googlemail.com> Date: Tue, 13 Dec 2016 00:49:49 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Icedove/45.4.0 MIME-Version: 1.0 In-Reply-To: <18a6d792-ed50-8963-ccfd-8c585824682f@googlemail.com> Subject: [FFmpeg-devel] [PATCH 2/3] avformat: fix overflows during bit rate calculation 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 bit_rate field has type int64_t since commit 7404f3bdb90e6a5dcb59bc0a091e2c5c038e557d. Signed-off-by: Andreas Cadhalpun --- libavformat/adxdec.c | 2 +- libavformat/aiffdec.c | 4 ++-- libavformat/apc.c | 2 +- libavformat/bfi.c | 2 +- libavformat/electronicarts.c | 2 +- libavformat/iff.c | 2 +- libavformat/soxdec.c | 2 +- libavformat/voc_packet.c | 2 +- libavformat/vqf.c | 2 +- libavformat/wsddec.c | 2 +- 10 files changed, 11 insertions(+), 11 deletions(-) diff --git a/libavformat/adxdec.c b/libavformat/adxdec.c index 0315ecb..a271e2a 100644 --- a/libavformat/adxdec.c +++ b/libavformat/adxdec.c @@ -116,7 +116,7 @@ static int adx_read_header(AVFormatContext *s) par->codec_type = AVMEDIA_TYPE_AUDIO; par->codec_id = s->iformat->raw_codec_id; - par->bit_rate = par->sample_rate * par->channels * BLOCK_SIZE * 8LL / BLOCK_SAMPLES; + par->bit_rate = (int64_t)par->sample_rate * par->channels * BLOCK_SIZE * 8LL / BLOCK_SAMPLES; avpriv_set_pts_info(st, 64, BLOCK_SAMPLES, par->sample_rate); diff --git a/libavformat/aiffdec.c b/libavformat/aiffdec.c index 59e969d..9e7a39c 100644 --- a/libavformat/aiffdec.c +++ b/libavformat/aiffdec.c @@ -181,7 +181,7 @@ static int get_aiff_header(AVFormatContext *s, int size, par->block_align = (av_get_bits_per_sample(par->codec_id) * par->channels) >> 3; if (aiff->block_duration) { - par->bit_rate = par->sample_rate * (par->block_align << 3) / + par->bit_rate = (int64_t)par->sample_rate * (par->block_align << 3) / aiff->block_duration; } @@ -318,7 +318,7 @@ static int aiff_read_header(AVFormatContext *s) st->codecpar->block_align = 35; } aiff->block_duration = 160; - st->codecpar->bit_rate = st->codecpar->sample_rate * (st->codecpar->block_align << 3) / + st->codecpar->bit_rate = (int64_t)st->codecpar->sample_rate * (st->codecpar->block_align << 3) / aiff->block_duration; } break; diff --git a/libavformat/apc.c b/libavformat/apc.c index a4dcf66..b180a50 100644 --- a/libavformat/apc.c +++ b/libavformat/apc.c @@ -65,7 +65,7 @@ static int apc_read_header(AVFormatContext *s) } st->codecpar->bits_per_coded_sample = 4; - st->codecpar->bit_rate = st->codecpar->bits_per_coded_sample * st->codecpar->channels + st->codecpar->bit_rate = (int64_t)st->codecpar->bits_per_coded_sample * st->codecpar->channels * st->codecpar->sample_rate; st->codecpar->block_align = 1; diff --git a/libavformat/bfi.c b/libavformat/bfi.c index ef4c17d..6c98e33 100644 --- a/libavformat/bfi.c +++ b/libavformat/bfi.c @@ -108,7 +108,7 @@ static int bfi_read_header(AVFormatContext * s) astream->codecpar->channel_layout = AV_CH_LAYOUT_MONO; astream->codecpar->bits_per_coded_sample = 8; astream->codecpar->bit_rate = - astream->codecpar->sample_rate * astream->codecpar->bits_per_coded_sample; + (int64_t)astream->codecpar->sample_rate * astream->codecpar->bits_per_coded_sample; avio_seek(pb, chunk_header - 3, SEEK_SET); avpriv_set_pts_info(astream, 64, 1, astream->codecpar->sample_rate); return 0; diff --git a/libavformat/electronicarts.c b/libavformat/electronicarts.c index 80ce4c6..30eb723 100644 --- a/libavformat/electronicarts.c +++ b/libavformat/electronicarts.c @@ -557,7 +557,7 @@ static int ea_read_header(AVFormatContext *s) st->codecpar->channels = ea->num_channels; st->codecpar->sample_rate = ea->sample_rate; st->codecpar->bits_per_coded_sample = ea->bytes * 8; - st->codecpar->bit_rate = st->codecpar->channels * + st->codecpar->bit_rate = (int64_t)st->codecpar->channels * st->codecpar->sample_rate * st->codecpar->bits_per_coded_sample / 4; st->codecpar->block_align = st->codecpar->channels * diff --git a/libavformat/iff.c b/libavformat/iff.c index bf44170..29fb7bf 100644 --- a/libavformat/iff.c +++ b/libavformat/iff.c @@ -748,7 +748,7 @@ static int iff_read_header(AVFormatContext *s) } st->codecpar->bits_per_coded_sample = av_get_bits_per_sample(st->codecpar->codec_id); - st->codecpar->bit_rate = st->codecpar->channels * st->codecpar->sample_rate * st->codecpar->bits_per_coded_sample; + st->codecpar->bit_rate = (int64_t)st->codecpar->channels * st->codecpar->sample_rate * st->codecpar->bits_per_coded_sample; st->codecpar->block_align = st->codecpar->channels * st->codecpar->bits_per_coded_sample; if (st->codecpar->codec_tag == ID_DSD && st->codecpar->block_align <= 0) return AVERROR_INVALIDDATA; diff --git a/libavformat/soxdec.c b/libavformat/soxdec.c index 0a937e7..12a94c8 100644 --- a/libavformat/soxdec.c +++ b/libavformat/soxdec.c @@ -113,7 +113,7 @@ static int sox_read_header(AVFormatContext *s) st->codecpar->sample_rate = sample_rate; st->codecpar->bits_per_coded_sample = 32; - st->codecpar->bit_rate = st->codecpar->sample_rate * + st->codecpar->bit_rate = (int64_t)st->codecpar->sample_rate * st->codecpar->bits_per_coded_sample * st->codecpar->channels; st->codecpar->block_align = st->codecpar->bits_per_coded_sample * diff --git a/libavformat/voc_packet.c b/libavformat/voc_packet.c index 0d56436..4f60467 100644 --- a/libavformat/voc_packet.c +++ b/libavformat/voc_packet.c @@ -126,7 +126,7 @@ ff_voc_get_packet(AVFormatContext *s, AVPacket *pkt, AVStream *st, int max_size) } } - par->bit_rate = par->sample_rate * par->channels * par->bits_per_coded_sample; + par->bit_rate = (int64_t)par->sample_rate * par->channels * par->bits_per_coded_sample; if (max_size <= 0) max_size = 2048; diff --git a/libavformat/vqf.c b/libavformat/vqf.c index 969fbef..841840e 100644 --- a/libavformat/vqf.c +++ b/libavformat/vqf.c @@ -140,7 +140,7 @@ static int vqf_read_header(AVFormatContext *s) return AVERROR_INVALIDDATA; } - st->codecpar->bit_rate = read_bitrate * 1000; + st->codecpar->bit_rate = (int64_t)read_bitrate * 1000; break; case MKTAG('D','S','I','Z'): // size of compressed data { diff --git a/libavformat/wsddec.c b/libavformat/wsddec.c index 9ca0576..81a4dcc 100644 --- a/libavformat/wsddec.c +++ b/libavformat/wsddec.c @@ -128,7 +128,7 @@ static int wsd_read_header(AVFormatContext *s) st->codecpar->sample_rate = avio_rb32(pb) / 8; avio_skip(pb, 4); st->codecpar->channels = avio_r8(pb) & 0xF; - st->codecpar->bit_rate = st->codecpar->channels * st->codecpar->sample_rate * 8LL; + st->codecpar->bit_rate = (int64_t)st->codecpar->channels * st->codecpar->sample_rate * 8LL; if (!st->codecpar->channels) return AVERROR_INVALIDDATA;