From patchwork Mon Aug 31 21:09:26 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 22037 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 1D40C44B3A0 for ; Tue, 1 Sep 2020 00:10:13 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0EB1B68AE6F; Tue, 1 Sep 2020 00:10:13 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6F16368AD4C for ; Tue, 1 Sep 2020 00:10:04 +0300 (EEST) Received: by mail-wr1-f49.google.com with SMTP id w5so7292822wrp.8 for ; Mon, 31 Aug 2020 14:10:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=+mOxBEN+0LNRS8VesF9Xg2J9SPZ/24rtXfw3o3NYxkI=; b=EP0ndiPE/VGm2NIuA5ew0xv3V+PvJkNo5cCl3Mgij/1gj7hqfKGWZV1ccO/B/53wsP +Guf3o3xadqJDWoAV94ROPZ9D07ABJm11/Kkesm/m45eGrDr2Ag0h4M1XOFqX8CjNbov 29T+vqxGYNFyzlw3WUHL2XGRF3grd0SBc+/Ry1iswzx4FbRm33A5Mg9v7ftAiRf8Sj1W ViBYpGgmCac1o+DXeIlOqVppae75RHQixlll9yqvqssuDPu+YDFeYOJdZxwuLB5KDeN+ h/LRa19dTGCGogWfTtBph1zig2vBgGzW8PD/NUDT7VB8N3RO/1f36Q67O8nAq6i0XaI2 n61w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=+mOxBEN+0LNRS8VesF9Xg2J9SPZ/24rtXfw3o3NYxkI=; b=HuAy4377dKfr29TcA4Wrn4w+VvOype/AhoM/ANeIH2vdSHm6JKKZuvKLUrqybky9vd 4GR/8EGsMqX7s1CxLSPzIdvR04uuKxCbxG813lqmOqvHSdULI97kBxYunu0cZCIKsn8L sMC341bfmaPnZyTSMlxnCi6QnP0cqT4UjWkfjhmC3hHARj7byMQOr8aAV9eqbEG7euwG V6Xa6130HXrdRUZjJhcrSnRUKyXjB8aBzbXR6pVw2puFGTgTSUc+DsGpnWqsbJ91RIWG 9Cq3beKfKyS8vsvSpQJg0y8g9sG6zZYNOtVIIyC9TZ9ChIj5obUSQjFVG18W++w+6ztS Eq/Q== X-Gm-Message-State: AOAM5323FYfzohN9ZgCnOz8zZZQSLk3uMRTya7uEK7gXe7oWs7k7Op+8 iSJ7XDxrcr0GDDgwpygcSFg78zmwNkw= X-Google-Smtp-Source: ABdhPJyIrB8BEtZpi6DYQs0kn9DUp9XtNXAK6rKhxnKBi1VIn/BOG2KBTuVTRkehTrH0U+GmtITePw== X-Received: by 2002:adf:f149:: with SMTP id y9mr3143620wro.93.1598908203448; Mon, 31 Aug 2020 14:10:03 -0700 (PDT) Received: from sblaptop.fritz.box (ipbcc1fb0f.dynamic.kabel-deutschland.de. [188.193.251.15]) by smtp.gmail.com with ESMTPSA id s124sm1035798wme.29.2020.08.31.14.10.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2020 14:10:02 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 31 Aug 2020 23:09:26 +0200 Message-Id: <20200831210930.18900-4-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200831210930.18900-1-andreas.rheinhardt@gmail.com> References: <20200831210930.18900-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 4/8] avcodec/magicyuv: Simplify check for invalid Huffman codes 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Andreas Rheinhardt --- libavcodec/magicyuv.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/libavcodec/magicyuv.c b/libavcodec/magicyuv.c index 5578374429..f2204f3401 100644 --- a/libavcodec/magicyuv.c +++ b/libavcodec/magicyuv.c @@ -459,11 +459,15 @@ static int build_huffman(AVCodecContext *avctx, GetBitContext *gbit, int max) int x = get_bits(gbit, 7); int l = get_bitsz(gbit, b * 8) + 1; - for (k = 0; k < l; k++) - if (j + k < max) - s->len[i][j + k] = x; + k = j + l; + if (k > max) { + av_log(avctx, AV_LOG_ERROR, "Invalid Huffman codes\n"); + return AVERROR_INVALIDDATA; + } + + for (; j < k; j++) + s->len[i][j] = x; - j += l; if (j == max) { j = 0; if (s->huff_build(&s->vlc[i], s->len[i])) { @@ -474,9 +478,6 @@ static int build_huffman(AVCodecContext *avctx, GetBitContext *gbit, int max) if (i == s->planes) { break; } - } else if (j > max) { - av_log(avctx, AV_LOG_ERROR, "Invalid Huffman codes\n"); - return AVERROR_INVALIDDATA; } }