From patchwork Sun Dec 5 21:19:07 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Niedermayer X-Patchwork-Id: 32088 Delivered-To: andriy.gelman@gmail.com Received: by 2002:a0c:cdc3:0:0:0:0:0 with SMTP id a3csp5146344qvn; Sun, 5 Dec 2021 13:21:19 -0800 (PST) X-Google-Smtp-Source: ABdhPJxrYkV572rpfjINe5bhIJlAKBLU+cC1NRHM8IH8gytVWCbO7vEpX8Mib2jh6D2NpHKK7aCj X-Received: by 2002:a17:907:3d94:: with SMTP id he20mr42145834ejc.75.1638739279415; Sun, 05 Dec 2021 13:21:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1638739279; cv=none; d=google.com; s=arc-20160816; b=1LRB/Sqkylg+/kuT0JDEpJ78LisxTMa1cF/9SP01bV8EGauOllQdvUNaL2AXcz6tQL A2ruTJ1hUUAAWJg5TLuZdrNj9oL/r/t7aAyxN/hvQ0D/Ur/nooxWR/hacU6Si7vlrMpU NdWtnmC/AoMQpNxb/q3VPYTTrZ0qwOL3ksk9IwK7FsEoz28xWPPSGQCoCf5sKpQx62yo FSzAKuqfnXeFiufRf6lV+9+71UfDE2MeHoTdmISfNj7bIo1FQgd1PLhd7mOXHgJs7CI8 AojW7f4+EPUF6QuoASgKZPUmA8h3IoGTOPyeiWcSI8u2d/J72l+IZKjePLgd4NQ+cwoj RvWA== 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:delivered-to; bh=j4Rgx+CBppC2BbpEEICCZd0K7AMo7UK0ESmTb6uBHuE=; b=J60FIEPz9F6XpmoVw2vZZUjbe6kj9CzuTds55zWiFkJ1i+0PuJJhcYe5B/0OTYOVLm 9pWPoyL/TVDysP8KG/fjmpzT//XO4kIIYwaOQe4ryouZLsJ8BvR+2qSpJhF5O3PWZXQM ZhP55SSZwDQPLvorqOhZuJsQRcn3L+opjAgOaBowErqMiMHQOvv7PQvEu9tZQ2+NNQv1 Np2hnc+8Emh4Ydf0fG4jHOxOfLKU+VK7gJybdHnWIoLq1ABbUzR9xjo2k0Z+SIHS/Rx6 EU7wvV/5gMSKjhHNVZ4JyxpLpzMSf4vIKnvQ11HNkGZD0j34OVj6YgzjlS9KUQEXFLC5 Bk2A== ARC-Authentication-Results: i=1; mx.google.com; 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 jz26si14753145ejc.693.2021.12.05.13.21.19; Sun, 05 Dec 2021 13:21:19 -0800 (PST) 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; 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 8501468AFE1; Sun, 5 Dec 2021 23:20:22 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from vie01a-dmta-pe05-3.mx.upcmail.net (vie01a-dmta-pe05-3.mx.upcmail.net [84.116.36.13]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5B1C768AF7B for ; Sun, 5 Dec 2021 23:20:10 +0200 (EET) Received: from [172.31.216.235] (helo=vie01a-pemc-psmtp-pe12.mail.upcmail.net) by vie01a-dmta-pe05.mx.upcmail.net with esmtp (Exim 4.92) (envelope-from ) id 1mtyva-002LQw-08 for ffmpeg-devel@ffmpeg.org; Sun, 05 Dec 2021 22:20:10 +0100 Received: from localhost ([213.47.68.29]) by vie01a-pemc-psmtp-pe12.mail.upcmail.net with ESMTP id tyubm2RSlSgGFtyubmZqSM; Sun, 05 Dec 2021 22:19:10 +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=f8Q2+96M 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=Ow1tM2tnXXMS_s2wjr8A:9 From: Michael Niedermayer To: FFmpeg development discussions and patches Date: Sun, 5 Dec 2021 22:19:07 +0100 Message-Id: <20211205211907.30010-7-michael@niedermayer.cc> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211205211907.30010-1-michael@niedermayer.cc> References: <20211205211907.30010-1-michael@niedermayer.cc> X-CMAE-Envelope: MS4wfFIgd50XM/xsKIhTPFWmUinAIGGh9hrqFwWWFqZYuFINkARdoyDZPxZbEgCA/kSh2oh9VcUQGK9HLbizHeZKeMjKwYfQ9Wd3D42PwkL4pNn7tt1lUPIQ E7HEradefYT7FHswfjuAaMtVq6TXLARtRQiRQNUnQ5alJ519a5ioLCG7 Subject: [FFmpeg-devel] [PATCH 7/7] avcodec/gemdec: Move all support checks before before image allocation 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: izxgEFei7Bcc Content-Length: 3207 Signed-off-by: Michael Niedermayer --- libavcodec/gemdec.c | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/libavcodec/gemdec.c b/libavcodec/gemdec.c index eee21a50d4b..fd14b22390c 100644 --- a/libavcodec/gemdec.c +++ b/libavcodec/gemdec.c @@ -157,10 +157,22 @@ static int gem_decode_frame(AVCodecContext *avctx, if (header_size >= 11) tag = bytestream2_peek_be32(&gb); - if (tag == AV_RB32("STTT") || tag == AV_RB32("TIMG") || tag == AV_RB32("XIMG") || - planes == 1 || planes == 2 || planes == 3 || planes == 4 || - planes == 8 || planes == 16 || planes == 24) { - } else { + if (tag == AV_RB32("STTT")) { + if (planes != 4) { + avpriv_request_sample(avctx, "STTT planes=%d", planes); + return AVERROR_PATCHWELCOME; + } + } else if (tag == AV_RB32("TIMG")) { + if (planes != 15) { + avpriv_request_sample(avctx, "TIMG planes=%d", planes); + return AVERROR_PATCHWELCOME; + } + } else if (tag == AV_RB32("XIMG")) { + if (planes != 1 && planes != 2 && planes != 4 && planes != 8 && planes != 16 && planes != 24 && planes != 32) { + avpriv_request_sample(avctx, "XIMG planes=%d", planes); + return AVERROR_PATCHWELCOME; + } + } else if (planes != 1 && planes != 2 && planes != 3 && planes != 4 && planes != 8 && planes != 16 && planes != 24) { avpriv_request_sample(avctx, "planes=%d", planes); return AVERROR_PATCHWELCOME; } @@ -184,14 +196,12 @@ static int gem_decode_frame(AVCodecContext *avctx, palette[i] = 0xFF000000 | r << 16 | g << 8 | b; } } else { - avpriv_request_sample(avctx, "STTT planes=%d", planes); - return AVERROR_PATCHWELCOME; + av_assert0(0); } } else if (tag == AV_RB32("TIMG")) { bytestream2_skip(&gb, 4); if (planes != 15) { - avpriv_request_sample(avctx, "TIMG planes=%d", planes); - return AVERROR_PATCHWELCOME; + av_assert0(0); } } else if (tag == AV_RB32("XIMG")) { bytestream2_skip(&gb, 6); @@ -215,8 +225,7 @@ static int gem_decode_frame(AVCodecContext *avctx, row_width = avctx->width * pixel_size; put_lines = put_lines_bytes; } else { - avpriv_request_sample(avctx, "XIMG planes=%d", planes); - return AVERROR_PATCHWELCOME; + av_assert0(0); } } else if (planes == 1) { palette[0] = 0xFFFFFFFF; @@ -244,7 +253,8 @@ static int gem_decode_frame(AVCodecContext *avctx, planes = 1; row_width = avctx->width * pixel_size; put_lines = put_lines_bytes; - } + } else + av_assert0(0); ret = av_reallocp_array(&avctx->priv_data, planes, row_width); if (ret < 0)