From patchwork Thu Feb 13 22:24:55 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Niedermayer X-Patchwork-Id: 17775 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 8A8BE44BBDB for ; Fri, 14 Feb 2020 00:26:03 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6904868AE84; Fri, 14 Feb 2020 00:26:03 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from vie01a-dmta-pe03-2.mx.upcmail.net (vie01a-dmta-pe03-2.mx.upcmail.net [62.179.121.161]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7944368A821 for ; Fri, 14 Feb 2020 00:25:57 +0200 (EET) Received: from [172.31.216.235] (helo=vie01a-pemc-psmtp-pe12.mail.upcmail.net) by vie01a-dmta-pe03.mx.upcmail.net with esmtp (Exim 4.92) (envelope-from ) id 1j2Mvl-0005pm-10 for ffmpeg-devel@ffmpeg.org; Thu, 13 Feb 2020 23:25:57 +0100 Received: from localhost ([213.47.68.29]) by vie01a-pemc-psmtp-pe12.mail.upcmail.net with ESMTP id 2MumjYmeowlys2Mumj7WMr; Thu, 13 Feb 2020 23:24:57 +0100 X-Env-Mailfrom: michael@niedermayer.cc X-Env-Rcptto: ffmpeg-devel@ffmpeg.org X-SourceIP: 213.47.68.29 X-CNFS-Analysis: v=2.3 cv=E5OzWpVl c=1 sm=1 tr=0 a=2hcxjKEKjp0CzLx6oWAm4g==:117 a=2hcxjKEKjp0CzLx6oWAm4g==:17 a=MKtGQD3n3ToA:10 a=1oJP67jkp3AA:10 a=GEAsPZ9sns4A:10 a=ZZnuYtJkoWoA:10 a=qq00nAn67K7VkKlocgsA:9 From: Michael Niedermayer To: FFmpeg development discussions and patches Date: Thu, 13 Feb 2020 23:24:55 +0100 Message-Id: <20200213222456.26522-1-michael@niedermayer.cc> X-Mailer: git-send-email 2.17.1 X-CMAE-Envelope: MS4wfLA9WIN6f0KWUJeqKD13dfnoPjwCqn1ZfyycUa32Dnm4Yg56euibKMGF11nf1PHadKSmUrUwaWLUZrTAtSpaFNcOYJFEKsAuaAgLG9Z4P5FVf8+/KPn0 BB1bP/xPGvenB7luE11BO3uP+wtt5JAbdTHZxgedEa3nFgpNbIO7kjYg Subject: [FFmpeg-devel] [PATCH 1/2] avcodec/dstdec: Use local channels variable 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Michael Niedermayer --- libavcodec/dstdec.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/libavcodec/dstdec.c b/libavcodec/dstdec.c index 880b838b0c..bdabced823 100644 --- a/libavcodec/dstdec.c +++ b/libavcodec/dstdec.c @@ -262,7 +262,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, skip_bits1(gb); if (get_bits(gb, 6)) return AVERROR_INVALIDDATA; - memcpy(frame->data[0], avpkt->data + 1, FFMIN(avpkt->size - 1, frame->nb_samples * avctx->channels)); + memcpy(frame->data[0], avpkt->data + 1, FFMIN(avpkt->size - 1, frame->nb_samples * channels)); goto dsd; } @@ -287,7 +287,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, same_map = get_bits1(gb); - if ((ret = read_map(gb, &s->fsets, map_ch_to_felem, avctx->channels)) < 0) + if ((ret = read_map(gb, &s->fsets, map_ch_to_felem, channels)) < 0) return ret; if (same_map) { @@ -295,13 +295,13 @@ static int decode_frame(AVCodecContext *avctx, void *data, memcpy(map_ch_to_pelem, map_ch_to_felem, sizeof(map_ch_to_felem)); } else { avpriv_request_sample(avctx, "Not Same Mapping"); - if ((ret = read_map(gb, &s->probs, map_ch_to_pelem, avctx->channels)) < 0) + if ((ret = read_map(gb, &s->probs, map_ch_to_pelem, channels)) < 0) return ret; } /* Half Probability (10.10) */ - for (ch = 0; ch < avctx->channels; ch++) + for (ch = 0; ch < channels; ch++) half_prob[ch] = get_bits1(gb); /* Filter Coef Sets (10.12) */ @@ -325,7 +325,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, build_filter(s->filter, &s->fsets); memset(s->status, 0xAA, sizeof(s->status)); - memset(dsd, 0, frame->nb_samples * 4 * avctx->channels); + memset(dsd, 0, frame->nb_samples * 4 * channels); ac_get(ac, gb, prob_dst_x_bit(s->fsets.coeff[0][0]), &dst_x_bit); @@ -364,10 +364,10 @@ static int decode_frame(AVCodecContext *avctx, void *data, } dsd: - for (i = 0; i < avctx->channels; i++) { + for (i = 0; i < channels; i++) { ff_dsd2pcm_translate(&s->dsdctx[i], frame->nb_samples, 0, frame->data[0] + i * 4, - avctx->channels * 4, pcm + i, avctx->channels); + channels * 4, pcm + i, channels); } *got_frame_ptr = 1; From patchwork Thu Feb 13 22:24:56 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Niedermayer X-Patchwork-Id: 17776 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 8CE4844BBDB for ; Fri, 14 Feb 2020 00:26:06 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 76D5768AF1A; Fri, 14 Feb 2020 00:26:06 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from vie01a-dmta-pe02-3.mx.upcmail.net (vie01a-dmta-pe02-3.mx.upcmail.net [62.179.121.159]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5E2AA68AB80 for ; Fri, 14 Feb 2020 00:25:58 +0200 (EET) Received: from [172.31.216.235] (helo=vie01a-pemc-psmtp-pe12.mail.upcmail.net) by vie01a-dmta-pe02.mx.upcmail.net with esmtp (Exim 4.92) (envelope-from ) id 1j2Mvm-0009hS-0k for ffmpeg-devel@ffmpeg.org; Thu, 13 Feb 2020 23:25:58 +0100 Received: from localhost ([213.47.68.29]) by vie01a-pemc-psmtp-pe12.mail.upcmail.net with ESMTP id 2MunjYmiFwlys2Munj7WOb; Thu, 13 Feb 2020 23:24:58 +0100 X-Env-Mailfrom: michael@niedermayer.cc X-Env-Rcptto: ffmpeg-devel@ffmpeg.org X-SourceIP: 213.47.68.29 X-CNFS-Analysis: v=2.3 cv=E5OzWpVl c=1 sm=1 tr=0 a=2hcxjKEKjp0CzLx6oWAm4g==:117 a=2hcxjKEKjp0CzLx6oWAm4g==:17 a=jpOVt7BSZ2e4Z31A5e1TngXxSK0=:19 a=MKtGQD3n3ToA:10 a=1oJP67jkp3AA:10 a=GEAsPZ9sns4A:10 a=ZZnuYtJkoWoA:10 a=nZOtpAppAAAA:20 a=QV669f6sTxJXImAbj48A:9 a=1fhp2MxaeJtTNGEnv6mo:22 a=Z5ABNNGmrOfJ6cZ5bIyy:22 a=SsAZrZ5W_gNWK9tOzrEV:22 From: Michael Niedermayer To: FFmpeg development discussions and patches Date: Thu, 13 Feb 2020 23:24:56 +0100 Message-Id: <20200213222456.26522-2-michael@niedermayer.cc> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200213222456.26522-1-michael@niedermayer.cc> References: <20200213222456.26522-1-michael@niedermayer.cc> X-CMAE-Envelope: MS4wfMLrbulBajTmMbVRtV/G6WtM24VsV4UK93SDcV5idlZKqCd5vIPlUwvFeGlGBxAXNQOXQOWBXftJhPJUVUBxAzuuV/x/dpikTMBFEnGFazolP4OLVjKm Yp8WL3NOEZdY+O4GBxvMJhH5IEpa3s8+7AiGD+cUjIts4DgqKfT4OgTG Subject: [FFmpeg-devel] [PATCH 2/2] avcodec/dstdec: Check sample rate 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Fixes: out of array access Fixes: 20659/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_DST_fuzzer-5735812071424000 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer --- libavcodec/dstdec.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libavcodec/dstdec.c b/libavcodec/dstdec.c index bdabced823..0505d3fde5 100644 --- a/libavcodec/dstdec.c +++ b/libavcodec/dstdec.c @@ -86,6 +86,11 @@ static av_cold int decode_init(AVCodecContext *avctx) return AVERROR_PATCHWELCOME; } + if (DST_SAMPLES_PER_FRAME(avctx->sample_rate) & 7) { + avpriv_request_sample(avctx, "sample rate %d", avctx->sample_rate); + return AVERROR_PATCHWELCOME; + } + avctx->sample_fmt = AV_SAMPLE_FMT_FLT; for (i = 0; i < avctx->channels; i++)