From patchwork Wed May 13 20:42:15 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Niedermayer X-Patchwork-Id: 19675 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 7E033447E73 for ; Wed, 13 May 2020 23:43:24 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 49D06680780; Wed, 13 May 2020 23:43:24 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from vie01a-dmta-pe03-3.mx.upcmail.net (vie01a-dmta-pe03-3.mx.upcmail.net [62.179.121.162]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C288A6804E8 for ; Wed, 13 May 2020 23:43:17 +0300 (EEST) 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 1jYyDl-000AD4-0L for ffmpeg-devel@ffmpeg.org; Wed, 13 May 2020 22:43:17 +0200 Received: from localhost ([213.47.68.29]) by vie01a-pemc-psmtp-pe12.mail.upcmail.net with ESMTP id YyCnjpN8S6Jy6YyCnj934Y; Wed, 13 May 2020 22:42:17 +0200 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=GKl27dFK 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=nZOtpAppAAAA:20 a=hDjnIH7eMgWNXCK2ECwA:9 a=1fhp2MxaeJtTNGEnv6mo:22 a=Z5ABNNGmrOfJ6cZ5bIyy:22 a=UDnyf2zBuKT2w-IlGP_r:22 From: Michael Niedermayer To: FFmpeg development discussions and patches Date: Wed, 13 May 2020 22:42:15 +0200 Message-Id: <20200513204215.17163-2-michael@niedermayer.cc> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200513204215.17163-1-michael@niedermayer.cc> References: <20200513204215.17163-1-michael@niedermayer.cc> X-CMAE-Envelope: MS4wfF4S0sLDGqAvCltzi9lVcQU9RoH2EknT2Cqbil8LBP7aGbcu+UtdzgwXtH6XC6WBZbKutQOXXkkyLqI60CZSD7TIHcMIWPM4WMgnypQGAxAIWNoaeEN7 4ktRR6kJofRCyFjjHCiaNLN3BbQma9gMWtGfBfZG/CAjHXFiUKTuK3HF Subject: [FFmpeg-devel] [PATCH 2/2] avcodec/hcadec: Check or bound indexes 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" This causes indexes into scale_conversion_table to wrap around, alternatively they could be clipped, the table be enlarged or we can error out. I have not found a document that specifies what is the correct way to handle this Fixes: out of array access Fixes: 21727/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_HCA_fuzzer-5752477891952640.fuzz Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer --- libavcodec/hcadec.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavcodec/hcadec.c b/libavcodec/hcadec.c index f25d6c39b66..5fa87319d29 100644 --- a/libavcodec/hcadec.c +++ b/libavcodec/hcadec.c @@ -286,8 +286,8 @@ static void reconstruct_hfr(HCAContext *s, ChannelContext *ch, return; for (int i = 0, k = start_band, l = start_band - 1; i < hfr_group_count; i++){ - for (int j = 0; j < bands_per_hfr_group && k < total_band_count; j++, k++, l--){ - ch->imdct_in[k] = scale_conversion_table[ch->hfr_scale[i] - ch->scale_factors[l]] * ch->imdct_in[l]; + for (int j = 0; j < bands_per_hfr_group && k < total_band_count && l >= 0; j++, k++, l--){ + ch->imdct_in[k] = scale_conversion_table[ (ch->hfr_scale[i] - ch->scale_factors[l]) & 63 ] * ch->imdct_in[l]; } }