From patchwork Tue Mar 26 02:30:56 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Niedermayer X-Patchwork-Id: 47482 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c889:b0:1a3:b6bb:3029 with SMTP id hb9csp1557227pzb; Mon, 25 Mar 2024 19:31:59 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUpkzMrUimdLezh7PvDQnLRP9YoYaP/cQZW8Ikjy73HnaSzf0yMk5fmTZNmgD4wFwHbPU9cu4lN8vmZx3TZqbKcVaWAFPivkAE1Yg== X-Google-Smtp-Source: AGHT+IGf0CnLc4EBkVWpVCd0D6QulW0gWpfYAQtOsL4wekR+Idcrcab1IFBbRSv05P5YubhQomac X-Received: by 2002:a17:907:a03:b0:a48:b39:63a3 with SMTP id bb3-20020a1709070a0300b00a480b3963a3mr4371715ejc.0.1711420319246; Mon, 25 Mar 2024 19:31:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1711420319; cv=none; d=google.com; s=arc-20160816; b=rebj7T03XSrwZ9sNnegrmJ5QUrrytlJ7QbPKbPMfAIck4dalIwfDvpePdS+Qmyt+rc efkmgdmDyboFR1e/0pIGoy2Gf8xUSWeuVg/iPxRcsoDEVsm/zshw14rpL4GfjLBL71Lj mNrxQUIpHrCirN6qnRUXYR7fwar/e1VUwZhbWLkzZptkbg7Ac8ttpMACUOt73dW/wl6h rdUhz/2JILCxF1p+CqFYPTCo3gJsf+ctij+KDE321+g0lXk1NwIHRRvWz51ku+3yYcJl GC712ir9TR8JAN4AjoPn0M+0CFOU4k7U8RTMGBkq4nodM+duf6U4U3k6rhb0CGwtxaVj baMQ== 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: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=RflKlWm0/g7VvbYE2HTR0Aa2iaReMhRthks+rTb74KE=; fh=e5zN9xSzcxLA6bGo3lF+CqTbY/oLwzApV03EO/RBfgQ=; b=Ib+l900QFzHCEn1U7ygE2AwbgP+MI5Uh0sHUSVn/Ux63t4V+N2vgOE6Jaha17mdfaZ X+8mfkJNWNA3QFnIPPpxJrmw77ypQnYBBuGPava8ZiWEykq1NaYVyzXBRyBnAHJZtkp4 jApbQvyOA53yqi7kMZp5wvlU8bOKRF2qvsf35/x5YiItttODoHXrRHAsLWcf/T9aecpp roUNQEUR4n/ANgTY0pINIFD2UJUZdWPWSOrkBppqedRDh1lpjBk1IYL7DiS1PKC2btz2 cp0MfwQuKabd/uzlFKjTos2WB4eGtYso1kvlwjnJl3oBeeqrJnmQBM4OEbDKNOOur3KQ v3pQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@niedermayer.cc header.s=gm1 header.b=fItyYVYL; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id gl17-20020a170906e0d100b00a46bb779746si3082977ejb.298.2024.03.25.19.31.58; Mon, 25 Mar 2024 19:31:59 -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=@niedermayer.cc header.s=gm1 header.b=fItyYVYL; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 67E7268D615; Tue, 26 Mar 2024 04:31:14 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from relay4-d.mail.gandi.net (relay4-d.mail.gandi.net [217.70.183.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2BC0D68D5EE for ; Tue, 26 Mar 2024 04:31:03 +0200 (EET) Received: by mail.gandi.net (Postfix) with ESMTPSA id 879B8E0003 for ; Tue, 26 Mar 2024 02:31:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=niedermayer.cc; s=gm1; t=1711420262; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:in-reply-to:in-reply-to:references:references; bh=3uoYOcxoj+kB0aVGMQj4+Hze7xifHOruXcsegbrDeyg=; b=fItyYVYLTUMs48ORvf4SCZqe8N0yqw3JWmSeTB0BN/1xqCianzS/QIPo/PFwechJgXjITB YgpapqiqdAlmbn6yZlTvK428qkyuhAotRmJIAQURy9GNgTm0ktFhCHg687dQL01JADPBSy 4MhY5b620oFUIHO8+/DZ3ocYlM9fyUZVXp/7u18Osu5SxrCAnseWVeG5DKo3hC3sQNXONW FP4uNdlm+j34807kWSRMv/K8kSgrwyh2BJbNT1T6cMDPW7dQfiMbbqFfsCVNxHchCEODwZ zGEzY00bie9UYiO2oi15kRd+8IdRk7gFawp4pLFJx2F/kWTEtXb5apL87sv2JA== From: Michael Niedermayer To: FFmpeg development discussions and patches Date: Tue, 26 Mar 2024 03:30:56 +0100 Message-Id: <20240326023056.20548-7-michael@niedermayer.cc> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20240326023056.20548-1-michael@niedermayer.cc> References: <20240326023056.20548-1-michael@niedermayer.cc> X-GND-Sasl: michael@niedermayer.cc Subject: [FFmpeg-devel] [PATCH 7/7] avcodec/wavarc: avoid signed integer overflow in AC code 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: z6FrfZb8nzQf Fixes: 62285/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_WAVARC_fuzzer-659847401740697 Fixes: signed integer overflow: 65312 * 34078 cannot be represented in type 'int' Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer --- libavcodec/wavarc.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libavcodec/wavarc.c b/libavcodec/wavarc.c index 99cbaf01091..aa1af6330bb 100644 --- a/libavcodec/wavarc.c +++ b/libavcodec/wavarc.c @@ -414,7 +414,7 @@ static int ac_init(AVCodecContext *avctx, static uint16_t ac_get_prob(WavArcContext *s) { - return ((s->freq_range - 1) + (s->ac_value - s->ac_low) * s->freq_range) / + return ((s->freq_range - 1) + (s->ac_value - s->ac_low) * (unsigned)s->freq_range) / ((s->ac_high - s->ac_low) + 1U); } @@ -439,8 +439,8 @@ static int ac_normalize(AVCodecContext *avctx, WavArcContext *s, GetBitContext * goto fail; range = (s->ac_high - s->ac_low) + 1; - s->ac_high = (range * s->range_high) / s->freq_range + s->ac_low - 1; - s->ac_low += (range * s->range_low) / s->freq_range; + s->ac_high = (range * (unsigned)s->range_high) / s->freq_range + s->ac_low - 1; + s->ac_low += (range * (unsigned)s->range_low) / s->freq_range; if (s->ac_high < s->ac_low) goto fail;