From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id BCE7840C8E for ; Sun, 6 Nov 2022 08:51:01 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8049368B526; Sun, 6 Nov 2022 10:50:57 +0200 (EET) Received: from mail-vk1-f177.google.com (mail-vk1-f177.google.com [209.85.221.177]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0B43968B02E for ; Sun, 6 Nov 2022 10:50:51 +0200 (EET) Received: by mail-vk1-f177.google.com with SMTP id r13so3171019vkf.2 for ; Sun, 06 Nov 2022 01:50:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:references:in-reply-to:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=/5yKAR3yL+eevzeFYbsTX9+5mNYjoZCiRn1idU4tvyw=; b=Zlj4/s9rznxf97GnGHmWyU5WGJMvvqj35WRhOZumsW4Z/zxqMc93GwpCyg/G3ymSNc mE/GbIcew7wsA8k2ogR41W+ELQJgNpJOjNt6XyU1hxiA11/6gAa2y/nD4mP0wx/QlOE7 LacT2F0qXj8HBl7r/unvGG9K4SHSzpljAZ+/qvqP/EZ9/JjsZE/SiP1x3C4vN3E9Pw0+ 3hP7jCV3R4d3L+rIEuFu7xicrar51EHpcp+hWSGWeQtqi1XxkjHvLFIBjt86u8wxyMeY U1HNZvo3AdYZL7fK+LIlhChfquJtsldFwVXTot0UOkU7Fe3N6Idd76CEShORk4mP/R1D gtVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:references:in-reply-to:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=/5yKAR3yL+eevzeFYbsTX9+5mNYjoZCiRn1idU4tvyw=; b=DTou4aPH4yrFleRuEdPRx5+2dKxCXchXV9r9dRAO53NRRZZdWJVn/9rW1kvEa5Uayz RUGos5pi6I8hrMl4WPFn649nvzzZBItIXMsVCStfDpF1PBapzwyFnzAeBWXEYSf1AF6c bmmLGX5UmTTpeSAkNW5/jgsDC6HSYlkq4GJUj38VGLywieSNM548j/XJLH6W9Iffpw2i cNuFqBKWj6tQgjPplsR83gcU3C9QB8TxClsDRVSwREWboOsHOiPI+Bgmtig7bewc4q/o pO4W6FE6lz6Gb0Y62EHvhGSHDiBkYBJvtaeL++qS4MGSoDbmgbdBysKyWXVrpxxH1L7m w04g== X-Gm-Message-State: ACrzQf3eM51ECmZA45dBgvXuIW8PNR4vISEYf3Ufls7y0PSWmJVywGKc PR9+Rn0UvXXNKzlfhr6HutGMluxGqdoAABAQg+G3SiTa X-Google-Smtp-Source: AMsMyM68wnxPw4j+aAeiEbwJyyvtYxVOPIwRRBxTNYUCTUUNhazU3h5iHtpwrKJmxxFzwRjQqzw9sqkTJ1CBsVMt2ZE= X-Received: by 2002:a1f:9f49:0:b0:3b7:9b38:7e6 with SMTP id i70-20020a1f9f49000000b003b79b3807e6mr22953511vke.21.1667724648884; Sun, 06 Nov 2022 01:50:48 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a05:612c:612:b0:314:ac6a:1eb7 with HTTP; Sun, 6 Nov 2022 01:50:47 -0700 (PDT) In-Reply-To: <20221105201629.1980-4-michael@niedermayer.cc> References: <20221105201629.1980-1-michael@niedermayer.cc> <20221105201629.1980-4-michael@niedermayer.cc> From: Paul B Mahol Date: Sun, 6 Nov 2022 09:50:47 +0100 Message-ID: To: FFmpeg development discussions and patches Subject: Re: [FFmpeg-devel] [PATCH 4/4] avcodec/bonk: Check for undefined overflow in predictor_calc_error() X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: On 11/5/22, Michael Niedermayer wrote: > Fixes: signed integer overflow: 22 * -2107998208 cannot be represented in > type 'int' > Fixes: > 51363/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_BONK_fuzzer-5660734784143360 > > Found-by: continuous fuzzing process > https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg > Signed-off-by: Michael Niedermayer > --- > libavcodec/bonk.c | 11 +++++++++-- > 1 file changed, 9 insertions(+), 2 deletions(-) > > diff --git a/libavcodec/bonk.c b/libavcodec/bonk.c > index 1695229dbd..40963aa7c6 100644 > --- a/libavcodec/bonk.c > +++ b/libavcodec/bonk.c > @@ -278,10 +278,13 @@ static int predictor_calc_error(int *k, int *state, > int order, int error) > *state_ptr = &(state[order-2]); > > for (i = order-2; i >= 0; i--, k_ptr--, state_ptr--) { > - int k_value = *k_ptr, state_value = *state_ptr; > + int64_t k_value = *k_ptr, state_value = *state_ptr; > > x -= shift_down(k_value * state_value, LATTICE_SHIFT); > - state_ptr[1] = state_value + shift_down(k_value * x, > LATTICE_SHIFT); > + k_value *= x; > + if ((int32_t)k_value != k_value) > + return AVERROR_INVALIDDATA; > + state_ptr[1] = state_value + shift_down(k_value, LATTICE_SHIFT); > } > > // don't drift too far, to avoid overflows > @@ -366,6 +369,8 @@ static int bonk_decode(AVCodecContext *avctx, AVFrame > *frame, > int64_t t64; > for (int j = 0; j < s->down_sampling - 1; j++) { > sample[0] = predictor_calc_error(s->k, state, s->n_taps, > 0); > + if (sample[0] == AVERROR_INVALIDDATA) > + return sample[0]; > sample++; > } > > @@ -374,6 +379,8 @@ static int bonk_decode(AVCodecContext *avctx, AVFrame > *frame, > return AVERROR_INVALIDDATA; > > sample[0] = predictor_calc_error(s->k, state, s->n_taps, t64); > + if (sample[0] == AVERROR_INVALIDDATA) > + return sample[0]; > sample++; > } > > -- > 2.17.1 > NAK, slowing things down by using int64_t > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".