From patchwork Tue Jul 12 10:26:26 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36753 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:6da0:b0:8b:e47:9dbf with SMTP id wl32csp1908209pzb; Tue, 12 Jul 2022 03:26:51 -0700 (PDT) X-Google-Smtp-Source: AGRyM1sGuZjaSxQcQMPiibAqj6TGlRfyHpyT5B4pj7A046tPJcXYzK0STEVMGmYz3jIKE9ictkDk X-Received: by 2002:a17:906:58c8:b0:6fe:91d5:18d2 with SMTP id e8-20020a17090658c800b006fe91d518d2mr23290674ejs.190.1657621611702; Tue, 12 Jul 2022 03:26:51 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id c9-20020a05640227c900b0043ad1f13cd3si2097595ede.509.2022.07.12.03.26.51; Tue, 12 Jul 2022 03:26:51 -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=@outlook.com header.s=selector1 header.b=GfPKz1Nm; arc=fail (body hash mismatch); 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 780A568B845; Tue, 12 Jul 2022 13:26:48 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-oln040092068032.outbound.protection.outlook.com [40.92.68.32]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1467368B5D6 for ; Tue, 12 Jul 2022 13:26:42 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bLSGwlpeczTmDRmxL0jbcchsccMN9xUHdmmO+iMi1k2Up4+wtYSxOFvoGeOneYB1eC9sp1B2lME3P0jriMYiBniwXv3V+bAk2WPpxSv8A9K/2dsenKw+ejLXzyOuZ8+orAgh7BP1uQ3GwyE2st0BeIR/y9Iinx6VTExQwegSoxR4519MhUXXDOQbQCu4pV/SpLfBh/s5ED2V1Fu8VDt7PDHDhBD7lNeNm69vuTYesI//6koJbh3f8kiwgia09L15KMo6fzDazgZ3qV3VrtrHHMlXF2l3F6MYYVfY6TS9ewP93CipqtKoI66Lk9DECOVMhkrNjReeRLapfbNC5YFy3A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=2FYSrrmVWDwZO758UH5c/SxM0rM1PATUk6ROfQEYUpY=; b=W9QQ7pK04uZ+5sRosp1TaM5kwF1zZNfkEHHFzxtgjl064n9Q4+00q7bFOslBZSnQKm7g30GU3W4tfknpUxV9xujOSuBMwzUP5lNf3q3JFewY5Vj02S3VSxiwL9JdH6OC+R1+WpQpGwWvpmmo+yP4j65EVYxb4TIZw6khcX0JdKdO/Fy9/Tni8W+D57lT7xgteJN1fbjPQJ0RnQA0nP+No5X8DsPcUHzEQd10tNP4KD6ty00z07MumRRcCOsdQrcKP9gaSu7qzph/rDAO3NcuUsNKtoTQihg0659WVzbtYsx4OmuomxsDMloYgpjQp6+vLm1Bihe6CnNSigNySHSEDw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2FYSrrmVWDwZO758UH5c/SxM0rM1PATUk6ROfQEYUpY=; b=GfPKz1Nmd5IqeytwoYbHUs9R0RctNBqtsoKEQJ6ElIWwewf7kfnYFtOxmP5Ay0eFlS3l4pC2ii89NXKUoKmiYBRoL8CL7fKYaB3ucAiTJwONBelSPkm/oJNJBMFGVNReoyGFKd+gfncAUuyffv/zQacqxl3Db3g43zFmDDGNrDhTWebOMulNzjVZ6tu5YM+Fb+Weun7doKPF10Mkb1hOHTtwVFIeDx9uxUsSLOYFtVYTK2UiKZWZRDWIBwhz1/HUYTKcVTkmr1l0cvRcDTtqQw+GesD1wuxcyiGGKnhKyziQAbtl+IZlsJC4aZ4M+nnXzpQ3USC0m4hrnpxNOKzteQ== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by AS4PR01MB9934.eurprd01.prod.exchangelabs.com (2603:10a6:20b:4f4::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5417.26; Tue, 12 Jul 2022 10:26:40 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46%11]) with mapi id 15.20.5417.026; Tue, 12 Jul 2022 10:26:40 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 12 Jul 2022 12:26:26 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 X-TMN: [6aZJgCkZk0sFxP77P84ZtJytLUvo/A+G] X-ClientProxiedBy: AS9PR06CA0001.eurprd06.prod.outlook.com (2603:10a6:20b:462::31) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220712102632.3784948-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 36ae413b-9199-4226-3d42-08da63f10219 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRJ0BC0M7R52QM1cuRSG6d3XwLLRFo71pXn1sLJdSEG3OIvsdL7CiFQTI3Z4TdKMrxkAL3DIMAgErFfRyLWo5SwVkgDzJFpCBni/m0AD2brapI+xPhjBrudBbp7yLmNOmK1AzuWmfLnGsGt1TbbbM76LlCpdob02XfYPCTK8DzmfPPGBhtcPzePWiVq7mTymOr1QuhjiR1E7E9M72xFftH/nV0PcFZjgozjgAMZYybyENpyXxZLIhPhrgdjNowP3e+QKknbm02ncxN7sEEcxmcX1w8esgB0DzaI+9CsC7M7Oz3piZ74lYbxDslJK/GgIUJH+UwoWKjNdmkQnt3fqJgn0FTd3UN9CO9nCk6nzogkxEXN1rlWsIcIrxrIWLyzzcyaiZHran2iSKOgU6M/kfz8b6I8lOX9RHClxU/lHeQG6dO7JSJAm3VwZ5Ks6TOXbTjyPjadUT9DZT2FZmvQAE0u2y8PuQTKZ6aXbwag4arw5mckO4t3acJIvyX6iwOfL1sYGMO+zs2n3r/VY/I95zaXGq0d/zUVd0wr1ZFr2LkBzK4a8aKXujfcC45+8cRlptsAAMiLetpHSNrbOzqpcHLDXbodjzlLLWVXHwULv4Wy0VOMwWyYm32Xqcaj1YYSlc/xftC09+vvkyRWA7hIDyXeLSDj0xusZEQYivOZqhXm+I+6smqhbqNuoHDmgnAtvDQ9RvdyA9zWJ64CSFkyJEbgQ6RWK4t7cNrgrftoYZBW574MToL2xHqcNQYkRhX92x4= X-MS-TrafficTypeDiagnostic: AS4PR01MB9934:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: JYv2I2ZQz7stgt53gCaSIwGg+xeKEVSfNBcjNoIYa2zD8bQNIFJDwQY2RUmZjs+dkQXzJkEq+YcpfOux00uIUqH5ifqaGMoWlsl0jyQHUO2uoIjZbETM69tnNp7srEXom3Qct4uQa6sAkxYsRpIfntALomnuSfZcUa+ylNSYSWAhDKfJWyWz9kEut67x199BFAvXSlBFE6Yo1dlGbFRSD8iwYnYbb+5M1Cu5Dhjhy5C5sIDSVnyexIe9GSsvfIzM2GJoo40eDqAHInLbLLeeQUOCb6zJf2hYS1Vcmp/bZNLwDG1PqnVgcksSZBtGGC7/YsH0vuhtkrYTUtfV53dCSjSeTB7LeP4tfFg2UbwojarH8GHxS4JQhpwgvVrM4sOhO17VAz9+gQpPSONadxuPqY1uErib8tHBTgAr9QVVgQSljfqvphWFBv5XRuN3akI75ED7dVCh/20raU+7DKgmJRimq3JlK2Jfnnr0Eh2SP7Y73xqHaqOitvFtJImNy3J+aWen3OO+oMc9xHG8uF7Rw7wdpUEcILlKkF57Dx1uT74DmCaV3N4Pj4sqA0rBde466M1TuhMIovUASDp7eCs+MkiGLhWQjRvPy/lcFC0/unS9r3ozne4EQg2g+wXnF+H9SK6mymbn55LRvxWOR6i4kUlvZp0JOpgwjBL99cdOMqj6WxumtLF7TeS62CzKO5pwcxJ+ehtzl6E5nXM5uOo7EQ== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: hCEAgBOGJe55W7avL1hrVzzfp0PrqVLux+VeWKTgAEjtIGV0I73J1zEsA79xCiNhgUxCf4r5124pl+Eh0+DncgP0xtgB7MDYrfepHTMVNbQ5ZpGMguEcm/D2hqUM9Urgsatd6ejrJ5hCeSneiWGQ96zTkVBfICSwvZ4abvf5eE20O2cplEAfDPhsjOvbORDzC7zbOreQDic8mwxR5K8MHeeo5ABPso6KeE5K2E4yDypcnq9/RhuGmNEbTHr54KVru82ZR+GO8A7eiE7UZQLOAZEuyS+hWj8mkQwGI0GqegRR5w6BQvFlT2lKIVberZZuTYaVLvsW/34A79HQEXaThBRsZM7dd8dYL5oPI7PFc0rvWfKR6vLqe40gIW388mGlFxMAPL6E6tJUKuMWZUK0D5QW6M+MRQ6c0QTVmZpSHpaZcBa3UJe+/CSCEBzm9c2jbSKyqbBc3qOpaTN+AKBaSNL41Co0T86D2Fjh/XjJK0jLKYDqyDaj3Kws5MOaL/8Xw5kN8GoFW0FNpeZl/c+FwpNsH1pMdXptcLeDXo7EstXg4pIWCD48eykticbM9taL7Zup7BpIMBd9XhklBakKFeZy2nzF9UrNoU/JStmDLwbz8uzPW8VnKblDaLNTaeyRzN3UXEwTUnOl4FLNc4gfwyYeP8wH9IKKd7QKyQ7SgO+0I/EdLJZfpvzuoXiCizTQzyzHE+ksZmlhi56tXKDsMT8EwmSINzn6t5hLu2isQCrwdsXKglx9wlTXeRjQYR1sxQmoRvKFeQk24CvvLHo5oawMHLn3N/mm7FosYoVZtSLPhznzSbrSk1fEMvfkvwEUBXXwEbwhBf9kp/9/3ryN78r1Rd80HF8AS3W7ZDNB0OxLAo8yxoWLSHA9kBbtkmDD3oXK3FktqJHO+6F76C/TX6hiU+/WQnseN6gYidBIoVflHJvSjGC4nc8EXGQGEBWiHhtJ0iXumEXB/8AHl2KIaP50ht/G/4qTZibKhbF/MrpH17/vFaI5AjTmdSGD8BmKgr3C570tcHFB0cEKWLhgWHCeCxjSunb3NbMB6LiNdI2CKwspRvU6CYisMioWwejIuFiHIm1PVZna/ImV8/Mdsp4Fq4C9fw6eLgCHUMoTTfjHUnFC69EOGgqh9Ms71FkbsFmAyrl6NkLxRYjIPGlK5moIc6jJ34rzop3gi5yhh7fdalFAWh/a0Hh4BlF/YlXbp5yGuHrHt2bfvPZoekQy9mk6/x2lL8+nGxhLvGw7li/cOIYVo6UYetIoWSlG9SXQQakewoIHPhFJaW5vAZle/b4yo2g42WIsAOAXaUzMAoU= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 36ae413b-9199-4226-3d42-08da63f10219 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jul 2022 10:26:40.3416 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR01MB9934 Subject: [FFmpeg-devel] [PATCH 1/7] avcodec/iff: Split extract_header into extradata and packet part 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: LdyNCB1YXJnl 183132872a1d8bc8a32e7fd8f994fa2f1b2d6bfc made the iff demuxer output extradata and made the decoder parse said extradata. To make this extradata extensible, it came with its own internal length field (containing the offset of the palette at the end of the extradata). Furthermore, in order to support mid-stream extradata changes, the packets returned by the demuxer also have such a length field (containing the offset of the actual packet data). Therefore the packet parsing the extradata accepted its input from both AVPackets as well as from ordinary extradata. Yet the demuxer never made use of this "feature": The packet's length field always indicated that the packet data starts immediately after the length field. Later, commit cb928fc448f9566e6f6c28d53fa4c2388e732a2b stopped appending the length field to the packets' data; of course, it also stopped searching for extradata in this data. Instead it added code to parse the packet's header to the function that parses extradata. This made this function consist of two disjoint parts, one of which is only reachable if this function is called from init (when parsing extradata) and one of which is reachable when parsing packet headers. Therefore this commit splits this function into two. Signed-off-by: Andreas Rheinhardt --- Btw: Both of these commits broke API/ABI. libavcodec/iff.c | 116 +++++++++++++++++++++++++---------------------- 1 file changed, 61 insertions(+), 55 deletions(-) diff --git a/libavcodec/iff.c b/libavcodec/iff.c index 74ebddc621..4abbed8dfb 100644 --- a/libavcodec/iff.c +++ b/libavcodec/iff.c @@ -199,11 +199,9 @@ static int cmap_read_palette(AVCodecContext *avctx, uint32_t *pal) * decoder structures. * * @param avctx the AVCodecContext where to extract extra context to - * @param avpkt the AVPacket to extract extra context from or NULL to use avctx * @return >= 0 in case of success, a negative error code otherwise */ -static int extract_header(AVCodecContext *const avctx, - const AVPacket *const avpkt) +static int extract_header(AVCodecContext *const avctx) { IffContext *s = avctx->priv_data; const uint8_t *buf; @@ -216,55 +214,6 @@ static int extract_header(AVCodecContext *const avctx, } palette_size = avctx->extradata_size - AV_RB16(avctx->extradata); - if (avpkt && avctx->codec_tag == MKTAG('A', 'N', 'I', 'M')) { - uint32_t chunk_id; - uint64_t data_size; - GetByteContext *gb = &s->gb; - - bytestream2_skip(gb, 4); - while (bytestream2_get_bytes_left(gb) >= 1) { - chunk_id = bytestream2_get_le32(gb); - data_size = bytestream2_get_be32(gb); - - if (chunk_id == MKTAG('B', 'M', 'H', 'D')) { - bytestream2_skip(gb, data_size + (data_size & 1)); - } else if (chunk_id == MKTAG('A', 'N', 'H', 'D')) { - unsigned extra; - if (data_size < 40) - return AVERROR_INVALIDDATA; - - s->compression = (bytestream2_get_byte(gb) << 8) | (s->compression & 0xFF); - bytestream2_skip(gb, 19); - extra = bytestream2_get_be32(gb); - s->is_short = !(extra & 1); - s->is_brush = extra == 2; - s->is_interlaced = !!(extra & 0x40); - data_size -= 24; - bytestream2_skip(gb, data_size + (data_size & 1)); - } else if (chunk_id == MKTAG('D', 'L', 'T', 'A') || - chunk_id == MKTAG('B', 'O', 'D', 'Y')) { - if (chunk_id == MKTAG('B','O','D','Y')) - s->compression &= 0xFF; - break; - } else if (chunk_id == MKTAG('C', 'M', 'A', 'P')) { - int count = data_size / 3; - uint32_t *pal = s->pal; - - if (count > 256) - return AVERROR_INVALIDDATA; - if (s->ham) { - for (i = 0; i < count; i++) - pal[i] = 0xFF000000 | bytestream2_get_le24(gb); - } else { - for (i = 0; i < count; i++) - pal[i] = 0xFF000000 | bytestream2_get_be24(gb); - } - bytestream2_skip(gb, data_size & 1); - } else { - bytestream2_skip(gb, data_size + (data_size&1)); - } - } - } else if (!avpkt) { buf = avctx->extradata; buf_size = bytestream_get_be16(&buf); if (buf_size <= 1 || palette_size < 0) { @@ -273,7 +222,6 @@ static int extract_header(AVCodecContext *const avctx, buf_size, palette_size); return AVERROR_INVALIDDATA; } - } if (buf_size >= 41) { s->compression = bytestream_get_byte(&buf); @@ -449,7 +397,7 @@ static av_cold int decode_init(AVCodecContext *avctx) return AVERROR(ENOMEM); } - if ((err = extract_header(avctx, NULL)) < 0) + if ((err = extract_header(avctx)) < 0) return err; return 0; @@ -1525,6 +1473,64 @@ static int unsupported(AVCodecContext *avctx) return AVERROR_INVALIDDATA; } +static int parse_packet_header(AVCodecContext *const avctx, + GetByteContext *gb) +{ + IffContext *s = avctx->priv_data; + int i; + + if (avctx->codec_tag == MKTAG('A', 'N', 'I', 'M')) { + uint32_t chunk_id; + uint64_t data_size; + + bytestream2_skip(gb, 4); + while (bytestream2_get_bytes_left(gb) >= 1) { + chunk_id = bytestream2_get_le32(gb); + data_size = bytestream2_get_be32(gb); + + if (chunk_id == MKTAG('B', 'M', 'H', 'D')) { + bytestream2_skip(gb, data_size + (data_size & 1)); + } else if (chunk_id == MKTAG('A', 'N', 'H', 'D')) { + unsigned extra; + if (data_size < 40) + return AVERROR_INVALIDDATA; + + s->compression = (bytestream2_get_byte(gb) << 8) | (s->compression & 0xFF); + bytestream2_skip(gb, 19); + extra = bytestream2_get_be32(gb); + s->is_short = !(extra & 1); + s->is_brush = extra == 2; + s->is_interlaced = !!(extra & 0x40); + data_size -= 24; + bytestream2_skip(gb, data_size + (data_size & 1)); + } else if (chunk_id == MKTAG('D', 'L', 'T', 'A') || + chunk_id == MKTAG('B', 'O', 'D', 'Y')) { + if (chunk_id == MKTAG('B','O','D','Y')) + s->compression &= 0xFF; + break; + } else if (chunk_id == MKTAG('C', 'M', 'A', 'P')) { + int count = data_size / 3; + uint32_t *pal = s->pal; + + if (count > 256) + return AVERROR_INVALIDDATA; + if (s->ham) { + for (i = 0; i < count; i++) + pal[i] = 0xFF000000 | bytestream2_get_le24(gb); + } else { + for (i = 0; i < count; i++) + pal[i] = 0xFF000000 | bytestream2_get_be24(gb); + } + bytestream2_skip(gb, data_size & 1); + } else { + bytestream2_skip(gb, data_size + (data_size&1)); + } + } + } + + return 0; +} + static int decode_frame(AVCodecContext *avctx, AVFrame *frame, int *got_frame, AVPacket *avpkt) { @@ -1538,7 +1544,7 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *frame, bytestream2_init(gb, avpkt->data, avpkt->size); - if ((res = extract_header(avctx, avpkt)) < 0) + if ((res = parse_packet_header(avctx, gb)) < 0) return res; if ((res = ff_get_buffer(avctx, frame, 0)) < 0) From patchwork Tue Jul 12 10:27:46 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36754 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:6da0:b0:8b:e47:9dbf with SMTP id wl32csp1908943pzb; Tue, 12 Jul 2022 03:28:11 -0700 (PDT) X-Google-Smtp-Source: AGRyM1tYMyE0FNFTwcHW6qf5lLTj/dr9vO9eFyNWcawvWBF5LuNDj8tbBdvqWZZkd2afT8DMom3r X-Received: by 2002:aa7:d759:0:b0:43a:6fe3:acb4 with SMTP id a25-20020aa7d759000000b0043a6fe3acb4mr31665468eds.27.1657621690900; Tue, 12 Jul 2022 03:28:10 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id x22-20020a05640226d600b0043adae91e5csi7231271edd.611.2022.07.12.03.28.10; Tue, 12 Jul 2022 03:28:10 -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=@outlook.com header.s=selector1 header.b=a9iB1MkQ; arc=fail (body hash mismatch); 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 98EEF68B84B; Tue, 12 Jul 2022 13:28:08 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-oln040092068075.outbound.protection.outlook.com [40.92.68.75]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 19F5468B61D for ; Tue, 12 Jul 2022 13:28:02 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aXYOy00bj9lcese5rr+ZaJQsy45rkNw3N7pOfX3QgnXpMbkEQRis0C3nfwfk3xjUNRui7oEi5VO4vZceTjP/iJhTA8RHIkyc0cPD7EK7pJVvV5lWP1hZIIAezlmPJ4PQZk/+Wdv21juX7XyhEFhnN2kMW2cSQkanryqb3brCEi+wU36lFuZiQcjrivWFXvRJdVFclrAfSypNHg6ErZXdZXHt8oEXZQm65yLS3pbCryHVs8qNV73Zwkm1Ta51dZP+fP36nT53PS6Aj8wMpveKhNBEkssPZgQW4xYpvTGJrqCKYxCBOXbtqUa/STNWigIXsm6PkYS73G7pc55FetzrHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=NO6boxeqKYV1bUTgWFiT9ChmSqEFho/6PT9E3j2txiY=; b=clOEyQ0Is6cMfEWvitwv0O8fKjjMoJ5OegHO2ESx4dVrVavLWZhcAZVbJQOB/IGR802yRmnB2xMWOuUWzhPPFQyORiDnYMmOq9ToQcbORSxOWFjdWS4ma1Yqd9IvoTZWgQX9grnb/n0B4qz5vgJrg8+D0tpxxDVm8cVlczXaZzrs0VIQBX3gLJXkT/bMIRvHtbyJr7LCdpQdHUrnNslzXcqiga1qVh7bfHxu/nOVhlwscLg0jBHmxUCRtOmZRxED9rpKjKGH3bkFskDsctw8cSZJilYWkKfjC7u0pyaj43TFFix2Poe972RvObQ60lgKHotEgCurWxftCbFMzsyXtw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=NO6boxeqKYV1bUTgWFiT9ChmSqEFho/6PT9E3j2txiY=; b=a9iB1MkQJn7JSCeLpwvXJv/dEaP2amN6OgRj0UF1I5/EKdZ46i2ElagFet4yzZQWc1xBhE/jv5WarN4a4fWgpZwFbbij10vD/nkycbDCjLIbFYIFkIDiiXvH3zRZVBFy+S0OxykU3bqVEPTI9FOLEbRGQhY4GbXrbYqSoueNOSTMI9ejs+nseLJ3gyQ6nYHS9hEwMcOifeu9ySdT81+ThG6BpLcUkV4QQ57OTfy/sQ4jeSZQ5+jS9LkqmTp/PEoYEVsW0NyDGlaEHu/LM7JqzjHjz2/i9udbK8GCotzfrQI71Qr+NeiRpr6c7i/9vTS8dO76uwZQxa8a5tj+FZhUAA== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by AS4PR01MB9934.eurprd01.prod.exchangelabs.com (2603:10a6:20b:4f4::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5417.26; Tue, 12 Jul 2022 10:28:00 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46%11]) with mapi id 15.20.5417.026; Tue, 12 Jul 2022 10:28:00 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 12 Jul 2022 12:27:46 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [UFL62tl8h5vwFAcXCkqYm8CkbfiOipC6] X-ClientProxiedBy: AS9PR07CA0048.eurprd07.prod.outlook.com (2603:10a6:20b:46b::15) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220712102751.3784996-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: bebb3b30-4656-4874-19ca-08da63f131f7 X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNXMm18b5TlTbUk9d1Jz4Ba727Pzc9OAl51+CjeWvsTJjiU41NG5ZWL2umcv9eBH0p6pt70Zasrfh9uywjRwqK6h6jDdSugqp4r4cGpDF2HJKk1CfUEtnhxJlI0reIOo9DKhI5fAJsh0wIWyDuVihwPgwjvhXVyijDCZVrjY/N+KnY/iaeoWffQ0KZ+ECRxIBM3VX5MJ9XhOYPzCMjGgusjE5wB/mYLCM0EJlDVK5YmlGCKQMk/j2gfam8zxyBS21uI8fmPwjoiAFKV/zwI/1NhVdZb0Yrqf53pV4SRpDdHnNIU+erfrHQhTZhyyZqGlSZfv915Tk0S82xUunqVXsXeybAnkKjjSpPy+KluEqmTvMAsU44SydeRSI9swehu/SzbOEkUBCkJvSx/YgH+fO7HA+rWMmpfGLRbdA7HsvXgQazS+T67ll7NxupnoG+j63lXABKszZCBxU26QzWRI/Tg33E3h9l6y23Usl9GoMbUtnc+4m4nBpJaLN449BDqSy7TDbkxkfOqpvLPWOQvvTM5qftj821ZcUsm6vAr5iJJQe6kTwz0xuF69ckQCp33n9oS8dpH5PogoTMYcU3SB7yKhWFd1cgDW+yQz9fC14JEJ6AUz6t57+I/ngblwmix53XCqDeOH5VIBl1V3USpdpbmWxI5NQxIs11Den0jH4OgiPdLcMejjef81QEDpK0sxLKiWJO0Ad+TP8rmKiez7QTmSvNWf6vA7gNI= X-MS-TrafficTypeDiagnostic: AS4PR01MB9934:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: GWv9md3E35T+eTAgtF0XP0cju5wserKd98qP68WUshTl1MGYrmx539sJBVQOcbOVw0nM9TsDDZI/O9ksjMhrqj2XOigfR+iPLLDSpGnQEGJ1kh+2k5EGntVQFZsndwOvlKadrPUwiu/lz1OITK7jqF438mXRlTZePc4CvJHmk7ZPaFDZG8D4hwQG3QcjQKT6yod85oGM+AXZmLVgcJxTAk3fRrDx0Pas8U9I5iNPCP+Zlx0g2u2mH1bHvwM0vKt6I7roC09YnPh1w4rppZdMw2kkUMrVwu3f5uHOM+T8Jzhfn23nw+B/UB8GeRBHtpoWRv/ZLHdC1Y2Ze9bg205AUHHrqiqk82JJ50mKFJwjVyeZo03FhYH/MxiMbH8qMm018BPCLTHBjw6klPKuolOr7c9nHnEZQCOCFKXXCjqcKAX76yBg+90b48cX6G5EENXZkf52aQrxcqJW9kepmpz7oPZInpOciqAZUGLWwTkGgpwF6QwZePdE/myMATYwm1/rGh6viw1ouFO6700ed66LrNIviobiq0VIAxdnED+i8QXEZaQjwNovnUmSgyzJUGFA5cXjJftKTzuemfjkC0ys7CHiTTY4lf5zPYbjOaCQQr8DDnzYTbJZ5nGJ3ms7vPuyCptmlldjNEJ4aDlj2LnhzF6Qu7n0O+dSKyOjsiM9TEvOrEP84YcbYmRiQphrECF6Rcsev3Bgdr4GFIkKnOQ6YA== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: qfI/xRHnvJ+E4s1pz/Qy3SgN/sZ1mfAoI8R+Pw499o8nWB+M2KuY9Deo6e1goQzx7Abaz/C7hWGT9+guzNBKEKafTB9PKhzsHmKzqewycHehJp5LClG8l/XI6W9wESPtYOMBnA6qN54DoVqP3FUFllUxnsBSbOiETYfckNjD0E5xO5LTnPCF+KjGaSYB8jUBQBtiO5thpKB5NFCQ4i/vqqB6GG+U+p2QmfCC4Hh4EtLjldOEmMxcHi7st+10iL7g/aSkPBJ8RqEwB/2ZtAmKY89QoECUx/nUpkJ+zv34LK2kj0VDw8ZYEEIGC9Zha0grEMaFl/azZv4qSn2zxxIMwfzOx+8dye8EpUi53ut+ZrkI9JTQNlakuFqJptwHABS4u0QNmC+CAzNAqq1iyu2EmB6AzaWySqqUcf+OBbvY3Zni6SghsucRMQvXouBErIx4ABwUHzJ9BCPDs7Po+4aRFUiemHOqAHtmeay7AFx48QLMdMlv6m4bfn/P+MGPTIRyDXEi/GMadT/Vhe2GMIEJ+agevbtm5VrezZXJoY7VrP96Zpf7SS5yzUhjV0D1NLDZUpwsgKtYxN5ry6ooeUHV0j5bF4pQh2rM0TYNb/tD6J9vFtl9uVJfiPNBxR7dvz+aIvlOg9feCqLfBsREzqGtIKgj0n9qWQGotNHLwBd0H8cA5yG6iJ+h5shtyl9kNjewi6z3WuZFS6fNyaGAlvNkvpi4/O8VbpEMFhHLqYJ5P9ghtfbALGEY2LtmMkpFQfQjM+VN+oDaajPIq5OneLahrJrdMYGkY8NV0IVQjndvDbl0Fmn/t14p/c4ImZUTudqtH4w1Q9JByc5sykrnm3aZnvFLsyh06FvB+JkiNMxkxsE3TLsqEm66++Jx1fmaLMS/MsueYwdtTSWhOWtKKQzYcsICln3kYRIHTdLCMLd0tpQbkINYjRWvNvn0UpeGwBFG+6K7d8MFmwx8oIsYve9o9fLAA66w4ZqJFDQ6tdAWBrRHEzstvpQaCUiKIpqJ9Cp4wF/PqaLH5MsT+GfNmtMxHfHq3nd2BJvBr+zOEg7HjJn/TFlUAI+/qmZ+eUME6JPYSSJUHfR+L+MN29aHRQg9MDbev64qxuTak+zHaY5jKUxiRpMBKD3N8UwwXIkAUrHynvChBiqRvovPIXsytz8hgW1SraEjA2VxZ/V9j+E/pgiyqS32Sw2oGmCetCPPhlB1wEIcZ3qzhy3H7T1ZdS2XcLp1LL1wKOb14JNR3jHnldxDmJHwXxwX3UD6dRHlqmAB2bK0hUmJ7B5TrwrxVWqEoUZGO3MT2QMq3I672nvoXbQ= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: bebb3b30-4656-4874-19ca-08da63f131f7 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jul 2022 10:28:00.6173 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR01MB9934 Subject: [FFmpeg-devel] [PATCH 2/7] avcodec/iff: Avoid redundant frees 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 8RAD5MR7a5hC This code is only called once during init, so none of the buffers here have been allocated already. Signed-off-by: Andreas Rheinhardt --- libavcodec/iff.c | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/libavcodec/iff.c b/libavcodec/iff.c index 4abbed8dfb..f14644471b 100644 --- a/libavcodec/iff.c +++ b/libavcodec/iff.c @@ -246,8 +246,6 @@ static int extract_header(AVCodecContext *const avctx) if (s->masking == MASK_HAS_MASK) { if (s->bpp >= 8 && !s->ham) { avctx->pix_fmt = AV_PIX_FMT_RGB32; - av_freep(&s->mask_buf); - av_freep(&s->mask_palbuf); if (s->bpp > 16) { av_log(avctx, AV_LOG_ERROR, "bpp %d too large for palette\n", s->bpp); return AVERROR(ENOMEM); @@ -256,10 +254,8 @@ static int extract_header(AVCodecContext *const avctx) if (!s->mask_buf) return AVERROR(ENOMEM); s->mask_palbuf = av_malloc((2 << s->bpp) * sizeof(uint32_t) + AV_INPUT_BUFFER_PADDING_SIZE); - if (!s->mask_palbuf) { - av_freep(&s->mask_buf); + if (!s->mask_palbuf) return AVERROR(ENOMEM); - } } s->bpp++; } else if (s->masking != MASK_NONE && s->masking != MASK_HAS_TRANSPARENT_COLOR) { @@ -273,9 +269,6 @@ static int extract_header(AVCodecContext *const avctx) if (s->video_size && s->planesize * s->bpp * avctx->height > s->video_size) return AVERROR_INVALIDDATA; - av_freep(&s->ham_buf); - av_freep(&s->ham_palbuf); - if (s->ham) { int i, count = FFMIN(palette_size / 3, 1 << s->ham); int ham_count; @@ -291,10 +284,8 @@ static int extract_header(AVCodecContext *const avctx) ham_count = 8 * (1 << s->ham); s->ham_palbuf = av_malloc(extra_space * (ham_count << !!(s->masking == MASK_HAS_MASK)) * sizeof (uint32_t) + AV_INPUT_BUFFER_PADDING_SIZE); - if (!s->ham_palbuf) { - av_freep(&s->ham_buf); + if (!s->ham_palbuf) return AVERROR(ENOMEM); - } if (count) { // HAM with color palette attached // prefill with black and palette and set HAM take direct value mask to zero From patchwork Tue Jul 12 10:27:47 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36755 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:6da0:b0:8b:e47:9dbf with SMTP id wl32csp1909092pzb; Tue, 12 Jul 2022 03:28:29 -0700 (PDT) X-Google-Smtp-Source: AGRyM1v3o3qJ7qwMcjjEoNOH1uUlVxaNvkoHleJCwLLDyXZf//Dk1cDUyrZN6P9RQ47nJxs4ylm+ X-Received: by 2002:a17:906:9beb:b0:72b:4a68:ffdf with SMTP id de43-20020a1709069beb00b0072b4a68ffdfmr12925135ejc.21.1657621709055; Tue, 12 Jul 2022 03:28:29 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id gw11-20020a170906f14b00b0072af2bb7c91si12117739ejb.139.2022.07.12.03.28.26; Tue, 12 Jul 2022 03:28:29 -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=@outlook.com header.s=selector1 header.b=MDhCbyS4; arc=fail (body hash mismatch); 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A936168B5C5; Tue, 12 Jul 2022 13:28:24 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-oln040092068085.outbound.protection.outlook.com [40.92.68.85]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7130D68B5C5 for ; Tue, 12 Jul 2022 13:28:18 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bwYAy4DQXW59bVGUZF1MCkSIsAU1uNsuEBKG4Gu5Zgw/Ao6tgsh1aSz9yMZhQDhvfLhLyQtbC1XRe7uKveK7jyQjjP5Im8/cdpUF1bFpByfrHUcKThjfj+287S+8CLy8MGe1wqWIsZrQzYDM/VpHTdycq3e3iXuo4OB1+EfJX0gUWNxtJZ3grA0L3VZkvFR92zm6fIWA0nxLeNAr9bIdQQEbT7E12AGE4zV78HRUP9DFLuWcQISBT9mv/ujFD7d7rLf/1YLDwH62gj0ocAUpND6YxXglUw8Y0743WCCiTSFxSc4lNu6H3XElLDIth/SYCoVGHnlwXPIsCowj2ND+7A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=J+mTQWXePVD11eUOGpwUCtN1B8OVgoQytNrFmoY+m6Y=; b=LSkW6Fnh4AqbukmOYC5Plvutdiu3HdJxehgk2ndcdihDojOJiFe7BCSZjyuOiqLz9949oeyO8aHqP7gCn4wuccBvLGhf2DTVS8hDCGMFPclP6jjjgZy4tEtv2EnEn1AXXLKJqA/4WTzoPqbxQMqFEKm3NQxg5nWYfAo0KD8bk/mSt6GW4oBM3YtOZfMIUt1VG0PK64V66annaGytZhIqRUs+xuTgix4Hz7nT+jiQnTM5NfVL5J5WzG9LW/BIkhUTU7pITI81UU75xmD9zfQZ2zJFAwwZWjHxkJjqk1koprP/pT2WgIIVmge8fN1sWb2xL9m07iK6XXimqM/jgfyLvw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=J+mTQWXePVD11eUOGpwUCtN1B8OVgoQytNrFmoY+m6Y=; b=MDhCbyS4duUu1UlN3PQWsfLetqk4Bl3IKz/USVGirwSPAvuPdz30tVkzZv9DjIAognwkxGpAMdg2ThOI+gzM0/qUgIpPd7O9d2F+rj2VGHo+HKSh1+/w3bVU4y7443iqwV6UjLd1BhFEGIe09HyFxjhPvxFAgFlCmInCbuabI9ilc7W55xK7jq5eTXQe1AS9QB28x5k2/KSTcufKR1D79K/LzqRL8Xz5gTH523864+0Zly3LaycJTWExy8rUvZoJI4S74zUPLOouQdd8KbW+01YJXRIxVvJEcFe57DjVNNcr6SJZXdgmqtfaEtlo95sy0bVFAbD4+y+vHyZXPousdQ== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by AS4PR01MB9934.eurprd01.prod.exchangelabs.com (2603:10a6:20b:4f4::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5417.26; Tue, 12 Jul 2022 10:28:17 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46%11]) with mapi id 15.20.5417.026; Tue, 12 Jul 2022 10:28:17 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 12 Jul 2022 12:27:47 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [6MyKWXqh2Ljsl9hXEOWXIkyOHuhx4ILB] X-ClientProxiedBy: AS9PR07CA0048.eurprd07.prod.outlook.com (2603:10a6:20b:46b::15) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220712102751.3784996-2-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6591c610-7d9f-45e1-89ad-08da63f13bf7 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRJ0BC0M7R52QM1cuRSG6d3EhJ1M2gg3/nzqfGy9tdNyP/xRfZzTjZx/WeqFr2ly2e83rmZkkKepjiH7t0gErATlrCm59OUWnZwg75th9xbjYTr4bIxVYi+CqNqbO5RAsHauMLOHtEs7pN3vKY1R8g43dsnpbzCQbxxxeOHtH7aFDciwEuuNvv7F4GeJlW25xLzAQzuH2pLOmZRYiVrntVdE3b1l0DOlLkkgSjgpdylYEvBGlx3s1gvaXHrM8jRf1LdKHdjthKHVVEF0FmayNWv5VJA0eFyP97HOD8MJbrT57iuslqeRKltgYC2VUvV4t3+KKGERmyH39UIU+CDvinTT3lxBQ2AFLkR5yNl4r1htkKBUJO1PsXOLwa/1Knanl1/tuq1p/in8WXye/bBlL6VmgFPOYkwtuJxvg8vRGzX5UHrXvcJqSNeh/TWk2D01/1myY9GP8ynNtDTcQEaBE1mH4Lf6jmQDH92wWKLegZDtX4djlUNKpSLBfHRzxVVujoOsO37ObIPhtR3e4qraLguEBDg//oWGIrtRdD7wKrYYkD/d7wAi5PIllE44ogyqRt0vc8/c+Lfc65w8f+FCPsV7CbADazasmVNG5eDHJV9DkWnSMsOyqRZfx6F7lHlKaKrF0WhK+4+wLpZgJr9MVty7ne6le+eBRb2zqxzgMUW+6l2jT7mL3HSjOgXbEsAA+VAk5qlsZPT2ysXtAAKFqvhQ0lTZtGk8XGYvCWgDIutfQP/at2Ng94Y5vVvStnU2Bo= X-MS-TrafficTypeDiagnostic: AS4PR01MB9934:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 7s+HmhkZFZA3mXL/KWWiKxlPC2pGu10DARJk4tHJWs3I9Gzz+1fll0OJyeztf2Hb4boEJft+3+Cw6PFb1PPwGW24+cvtyX8YNG2TjEYHZ5t4l0mSNeJtsJCigfg4/trenHFy0X58Qfr0S/zY7inB3mEDLQVx59/Yho3vRACNOJTwa9tFm/ae3DN+mWVQ5Hpf2W4VkT5SS36DiVap77q7vO3QxqCHx/74zc10Rz8sGO+/bjp6gtkGVK8KNrU/JBk4GbkUD09d6yToZomiutfTCUfJVu3hnTCM8onmT1H+4brQ7lbT8w2QqRojJQOs9TTFRWi2zjNqQLWWpnZrdaLV8QOy4Gg0uFvAzJfAJOI0pP1K7GOf6U5J3AKH83AnCaw4jayQC4Ej2PuX4ZZ/w0WN7otqeAA6oOJTCxGwPLALXt23bfDXrNRmct+M0SAoRn/Qnzlip5yfUBQc2OkrMl2qU0ilhEEQfIylSLrigW8ACmimuv/8q2lc0L2wNH+kr5M65LEcK5C9bzA0XLk09hr6fwLkLpPc63foWEw09tAr9B8CGi28An07AqpDxWxspRiZaUEu977NvnrZpkPkabdiE4MpYZZ8YILd1UlWnFARqQDbe2dYA7/WDZWNfvrM0TxEOpOPeVZPW830kKBz6Cc6pn301MawBEowCDBJs5kdevttKgzWBq/+hCB6dub/GKJTM4lya9OAHgmv9ecu5CQO0w== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: cIBLvUYVKDnbuMalcXVuVjHQMYktNUQNH8Bes849oZBYzAwY83ZOw9UfdzDiDKTx4mn4XkaHsF5V+0aUA1Ldnh801l4ob1p5SCsjtTY/5fTu8rkXhQrV677h8jJ1tgyYphzhwoLjvc2wcHHL43KMjN95ARG7z7smWKa6dR4r30yl01ztf9YTKFWzs+DKWJVhU860fS8lU//jGhiwKtGqPsLreEgfiuYl2CpFmYjKSbpVB8wO2kzUuhA73UgK+iL5g8HSA+Ac84z0ymxy/BrE728kMd+zr0LGTP9vUxa0BE+Za6L5acijAVUlbrudWRfxS9SzCzPkR7BDI9sdNJylB9iJyCm+n+GnMVSyg21koe6YItARsAVm7MQlFKgRvpixwgNUklEnI1BHUwLv7kQYWsSqbpzw8DV5DyxCPt8ZD+hfyQXD2VYMg9lAoXL+FD8Z61fVqsvW3IEEAcN9RmMsP7049XSnDIM+X/FdXodomhRo3OehCnazRfBfBDyc7H5soMIUwbsj0C3R9UPdJ2Iinmp3meLTdYYObytw645PNc4uJd9iHleBgnarsLgBGhc16iTLfqlEy26qUEVNdnHHCMRCrWd1BLt3VHQBEGL1Cmt2S8aZT+pR9Mh3sRemAEbEr+bR6S8dd1BnPFPFIHlJpFA/HnFOHN4N6A59dZORc1kvBjNnJub4ImQ51UnKjmr3QGZ3nugXCgNIbffgul4GWD1N57InL6KYZf+4G2Jv70+IOkbo9y2BT7m+8R5m8H3uG6zwfcIehEoHlZzg5JYUjGXBKPCTPSzxITf3TriqIsFbQLAsk8MxTZL5PzB7G6o7t8XxU17esTUYYylDilkwk+yo0X/7cVlRuk58TeqlaoUl5YvW0IIPruHnlc/wLytMqgQoJBfCa2dRqgYLbe6tAwEmiISqCKQ3J60Fh+KQO89tEJeYiMrLpwOA8IRRDE/KCtURIEnWTK7P0dwg4fpEqdN68d2E7As0kzzxRFqIIt2EHKwkym75wRMPG+x7iSsxudpkzqSIBZZqC3jF4aVUeRJ1kCk7cpL0Pk3oobe6h1nBFS9so++YRmEuMaf02oh2NSU8zvjRCVVlKUNDgDj1lGiJ4fe1g+r4HUWDoXnrwddiLjxjBEVNenfdx+uPKLif40wibbuU3KqfyVKBb/ZJ6RaVLaOkm77kjE4Uldy9N9VMJvnBO8VqxQ0Gdprx5uoq5nE0agFmNwYAw1r++xFGy9zmodtex40D6N2/oiph8WUBNEQ8UfSyCGjS09nsKFwmRGQdc2rgbZ8I1zlHgwuI85hCppZhUtjA8AKQIHSEEBM= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6591c610-7d9f-45e1-89ad-08da63f13bf7 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jul 2022 10:28:17.3505 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR01MB9934 Subject: [FFmpeg-devel] [PATCH 3/7] avcodec/iff: Return early when possible 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: k+/lhR6BycRa It allows to save one level of indentation. Signed-off-by: Andreas Rheinhardt --- libavcodec/iff.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/libavcodec/iff.c b/libavcodec/iff.c index f14644471b..13912e9133 100644 --- a/libavcodec/iff.c +++ b/libavcodec/iff.c @@ -223,7 +223,9 @@ static int extract_header(AVCodecContext *const avctx) return AVERROR_INVALIDDATA; } - if (buf_size >= 41) { + if (buf_size < 41) + return 0; + s->compression = bytestream_get_byte(&buf); s->bpp = bytestream_get_byte(&buf); s->ham = bytestream_get_byte(&buf); @@ -316,7 +318,6 @@ static int extract_header(AVCodecContext *const avctx) s->ham_palbuf[(1 << s->bpp) + i] = s->ham_palbuf[i] | 0xFF000000; } } - } return 0; } @@ -1470,10 +1471,12 @@ static int parse_packet_header(AVCodecContext *const avctx, IffContext *s = avctx->priv_data; int i; - if (avctx->codec_tag == MKTAG('A', 'N', 'I', 'M')) { uint32_t chunk_id; uint64_t data_size; + if (avctx->codec_tag != MKTAG('A', 'N', 'I', 'M')) + return 0; + bytestream2_skip(gb, 4); while (bytestream2_get_bytes_left(gb) >= 1) { chunk_id = bytestream2_get_le32(gb); @@ -1517,7 +1520,6 @@ static int parse_packet_header(AVCodecContext *const avctx, bytestream2_skip(gb, data_size + (data_size&1)); } } - } return 0; } From patchwork Tue Jul 12 10:27:48 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36756 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:6da0:b0:8b:e47:9dbf with SMTP id wl32csp1909148pzb; Tue, 12 Jul 2022 03:28:37 -0700 (PDT) X-Google-Smtp-Source: AGRyM1vl2Y18Zzukb9bOKY66adGUO64wSn2mO3SK5moD6IJC7us/ajOTqvdKXStR4Di97iIO6yJ1 X-Received: by 2002:a17:907:2bf4:b0:72b:3336:ca9e with SMTP id gv52-20020a1709072bf400b0072b3336ca9emr18391602ejc.341.1657621717294; Tue, 12 Jul 2022 03:28:37 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id v8-20020a056402348800b0043ac8673d94si12878875edc.614.2022.07.12.03.28.35; Tue, 12 Jul 2022 03:28:37 -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=@outlook.com header.s=selector1 header.b=KAiJPYF0; arc=fail (body hash mismatch); 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C84B068B8AA; Tue, 12 Jul 2022 13:28:31 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073026.outbound.protection.outlook.com [40.92.73.26]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id F3EC768B486 for ; Tue, 12 Jul 2022 13:28:25 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ejXVSVa2D3kXCI6DBPf6iXaGiGrTZOfrSm58vuoiJb8HyMGGeB/HXOq0E7D1hEgpRJ5LjgyGfgTHjNPMvMUWOSP4y2CVlLrTnZaIXZA6HXUe46nk9y8SUUMWTJJrFX7qZQGEn7KnmoHGZDzNc5vwYZtUpDHQvmdefC6niiX6MhJJCMiFDRa9dHHjDudg3F8inKPBgSlBvfThI35Pl2NLHsBy6ok6VujCWdps2nM3xbz6b9XqkoA4swrCsvlVFwOaDGtH29c76agML3c/oV9JQZeM7wODq5Fmq/jRoMaTm6plHkAkAhgFLF4+vPZYmY2Qxdlu4+y6MDLXAvC1oCTbrA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=e+ZZ+NhZJruYPNN9xiNBwiCvHyJjLCROysG7CI8IhPA=; b=FxpUDHdl6BzrVoihI1NiUO1mAqIDBTzXGA/f3E2s2cyH1SCk28rnfjLZwh1iZt9IxtVbXeLsyjwtjAwHnccDVD99ZboGEHZZRTE0M1JONfVJrBO5T/Q/L858ICHJZ4FgG0781Y/CrNqd4JgIFHelXf7YfnHsDlbkxbjZETQXRr1OwqIy9wAf4Wk/qCsWskbQVy22hXWH+VSr1181eGgSxKwPBQgmLJeVoy0V6kh46rTTrLpSJ2oj4nsOQv+9GUXMVVexSFww5rQjYrVUCKmBm25ND/5RHqpWqrVz1TdgKAlQuo902GgNnozW7Dc0FYO4dlVayQC5b50k4DaSBcb2Zw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=e+ZZ+NhZJruYPNN9xiNBwiCvHyJjLCROysG7CI8IhPA=; b=KAiJPYF0oShnlBaYRcc90zToBAOQ+2pWtPskRY3JNBrPaEKgxXSn58iMDKVrI00+IFsDmG8ZYorhV6BOIlg9uA+xRYJiUSGt13u6MJgirZQVheup9y6a/sHTUq8mp41ORWuvOY8v5YtXcZ7ZxCW792uwsU3NswwwWte0O9G1hDOKcgHsVe5h48oXTN1OMFhx3xXNCnCwPU7Akxp1vmcfiWvrhUNcar+NhaPkhbYxzjcKB1WKqGfqi/LfQapM/YhwLBUgyJeEgv21HmLIu2fhlgsprsr5d5898gNz/uqEF+7d8bbwOSFSs26QV8DUqKey770/E6tWsDJXRwj8Dv+hEw== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by VI1PR01MB4814.eurprd01.prod.exchangelabs.com (2603:10a6:803:92::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5417.25; Tue, 12 Jul 2022 10:28:24 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46%11]) with mapi id 15.20.5417.026; Tue, 12 Jul 2022 10:28:23 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 12 Jul 2022 12:27:48 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [XS6dUN50p3/XeGkSCot3fbqceVRPVidm] X-ClientProxiedBy: AS9PR07CA0048.eurprd07.prod.outlook.com (2603:10a6:20b:46b::15) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220712102751.3784996-3-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 724c3e82-56b3-4e03-0ee6-08da63f13fdc X-MS-Exchange-SLBlob-MailProps: q+fD6XS3/UIKRQhccSdu4SStA0Iuks+UmrEAqE8h2bg+60aLs8LL8ewSZqy1xJHqojXjNe19S/zuPzmMd93yQBiT/ON4oHHLVinSBUjC2rOHJP28ELe+FGjS8Qjz6Jl+Ft6sZ1KCGGzUXJI2D6UApLbt5DvOMlwq5cbzaUEvLJ2fHB/6GRkR3+/gF//NY80R1uyBpa/TmLpLs2UNLX7fhwdDqaL0W8KO/mInGI3iigiHOtPZONDpL4rtsZSdp4VKQl42rKg7vi057mxmXDrXAqUBQMIA+psuUcWE+xuzkij8MYP7sw+vsBdQrStpulaJBOfnxlP5deGRyr8L+ZHQ5A8PaI4eLGA8P+egG6eLrdLAFHcR4bwRGsWX2GB5P61JWclEQs3INcECpqFdsIoKc1ZL9yFRE519bSusU/z04jZF2vcR9iQO5TpZScRNGxHYSWl30eCwYb4lpacy8NxidICV6DV8Xlc0z/fmBhunWHDUjLRwtcI/TYPMiTABXgIGICjZ8ZEqa63zYxzG16FhSbpz8tHB0757rwSSSLR+W+FPOmcgtM14ondX+KfscdocqOuVVDxe1nK8frpxf60eALkS8DtO4qs0BcmazislacakjTY+AbDahAJ6t5HmeC3Z6f5DXTBWZIHLjf4Wl/PXgqr/Wd1w6SQYFYSMgWCeOqaoBqCxAtP6CdDwsBgJ1Z5B2uhzBDle9YBY+37beJAgew== X-MS-TrafficTypeDiagnostic: VI1PR01MB4814:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: g+1gJZtVfVrHNAtSo7+03QwaUGB5n+p9CwQewOV7EjEvN17rVgBsgkA4q33NSzJuY4r0Zb0huGKu1U+M3RUtSuFcJ4CyJF7+ESlbjwZ+C4KufGuq1Y0pCNNN4AWhV8owI65Qwj+gQUzjnfFC67soZSt3jaKqkgsNY1Ekdi3k2xzSvOLEd04tmpWCfTaGWoKTRzhtPx1N1oe1oZ8ay+mpYIcC0/6AXNMVSYOhly8WZJp3vL/Ufn1F93ByjxfetPfQzq9WBqDhoSI/vG/CWF2ZlV/OgokxVGhddH8p97Me5mLGkv9F0UukeWUPDlBdy8Qq/HsB2u0Ck2CTBFNv8Df9xxtThrQp6EcoGxj+p0P817WhbQfuF4FtdwlINxjftGlMNgvy0BxC+qsENqtedbDF32eyl16gnpLYYxJ4QB+4qsij3o2Vsae0bN7aEGmkw+3JoA1tZKVGmepZsQcFacPkZOVjT167z7o2Z0/Mhjzqk6sYFthcQmmPCqD2sfvGUjQLO+YhR2F3QhsTf86MiBK2MWTm8b/r9LjVexDJKBod+ILeUuVt1vkBAgUC6QxX1KS4vM+AaWXEONSYohW4ZqL+pvUrI1MkMV44tYLzoQcu+8GJYksz8q761s4pgwF/AlC5FmU0FiOeSdcgrRo7oWUQCku+aH3l78MkcIqO+u4NnacFLPFks4IUlGYejLair6CwP9fkuBtjop3v6P2d2DVuZw== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: KIvhRsd3TCEEUHeZwJLV4yermwarNqFFN7v4P+nBxu/Qxd3eVAh5uD+tTBjZb6a87nnsyq1kZjsAZc9OOhzXq1EhROqA6LWT4dahx1w3MN9U8V2AEChLISwnS/hO21mgjwpwA3448I6iwh2jK2DGPnu/Tb5ccBYhKQ5SqrsDWuwTW1V4Emq+22cYouegGsfPRiT/BCnhbZereHBBhluOM44R2csizpVtJLk0/IZLLAjlp2QrrkUb2axvtABQmfGKEHZ4msiGLMUQ3VuvYUye7jUGbtJVoDo4FzAe3aQoqBl+5xSCTm6bpoCuGsH94z5tDY1CXn9+VgmfL0woVc3CFiphbp1kPg9XhQRCsYqNRVKj2deDBBkuivuyCw0jayx/Ck7bE9d+dZXwdCtvZ9rCrANqBTm97NMM31VOzc4E8xR+mbWHUmfKv0MLb5rqLwxbJChhOzJK7zgbwAmv1DmwuWTSRTbCfabbGWvmsPhMF2B8xNV8fXPIE0B0rQqGKwF5IOiGgkklcfJlSWFlulzozXqc0UaNZfaHHG8aTiiVWeoKGYnXJg2Yhbh3vrrUT8w7lVFNe5cmfBmXmKQtITLaTXOHo7/4iT0oF7qMTLROxT4ayBqmOkj3Mp7FA5BXljOWYbgc0h/kNUTptiuAZ5vACKQg21M+ZAYXBUtx1zkNVW3ZrMQ31u0Ds3VoWjSxSxqVYiHmaV9z290oGrrnSkj/flHEYRQszvGtx+1CS3F79SlPY7gE4oSM7EofLjJFciVNUe/MKqUF0cliTAD24dLwYoRC7agTOupsaWhEmKTQtrXQwYgZXXW6Kv8frZtrZa4lMqIzILk02EjFwyj/GinyJxacV2KTvstVL2fgyM14WqzDX5aBRvhcCO60MJOFyMeqm++7KpwWUK07Do9Px9mLQj3wyi1UTMbPo50yavHX2mKUJEQWEXjulpx4aQuMIRQc2Exj3Cmrnql/aMKuaC8fgExc6SfY64VhbkxEYeCaTh5E3S7HyUoLfchSHbls61oAjtKTKOZLjiFqTyt6mcSeqsatzw0FpB/ewc9jogKIAfNjDXew3iqbXyjxc41P9Gf3PPBGsYoM/H/aROoq5UCVgk1dK9EnqWSqoo24tENxkOsF3XDt7LCMc57QydCUuBQJYFLPcN+bsmTKO0rDSsrG/hmh7IKZZVBs5DCdcj72cVf1rGBQqFuzaUKqJ/OFsqInJku+/eNv9ce0S86ZZ/XWeTjgvzRN/PGE1cbEkzGlbi9Er4eB9mX/gA8JUBXgYj4SAwmsg0hFJQXmrt59jjMuWLbFhp1w/QIXKVvUvaLIOFA= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 724c3e82-56b3-4e03-0ee6-08da63f13fdc X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jul 2022 10:28:23.8500 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR01MB4814 Subject: [FFmpeg-devel] [PATCH 4/7] avcodec/iff: Pass extradata and extradata_size explicitly 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: QcVxqZgHCEFf This might be useful in case this decoder were changed to support new extradata passed via side-data. Signed-off-by: Andreas Rheinhardt --- libavcodec/iff.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/libavcodec/iff.c b/libavcodec/iff.c index 13912e9133..453e910982 100644 --- a/libavcodec/iff.c +++ b/libavcodec/iff.c @@ -201,20 +201,20 @@ static int cmap_read_palette(AVCodecContext *avctx, uint32_t *pal) * @param avctx the AVCodecContext where to extract extra context to * @return >= 0 in case of success, a negative error code otherwise */ -static int extract_header(AVCodecContext *const avctx) +static int extract_header(AVCodecContext *const avctx, + const uint8_t *const extradata, int extradata_size) { IffContext *s = avctx->priv_data; - const uint8_t *buf; + const uint8_t *buf = extradata; unsigned buf_size = 0; int i, palette_size; - if (avctx->extradata_size < 2) { + if (extradata_size < 2) { av_log(avctx, AV_LOG_ERROR, "not enough extradata\n"); return AVERROR_INVALIDDATA; } - palette_size = avctx->extradata_size - AV_RB16(avctx->extradata); + palette_size = extradata_size - AV_RB16(extradata); - buf = avctx->extradata; buf_size = bytestream_get_be16(&buf); if (buf_size <= 1 || palette_size < 0) { av_log(avctx, AV_LOG_ERROR, @@ -274,7 +274,7 @@ static int extract_header(AVCodecContext *const avctx) if (s->ham) { int i, count = FFMIN(palette_size / 3, 1 << s->ham); int ham_count; - const uint8_t *const palette = avctx->extradata + AV_RB16(avctx->extradata); + const uint8_t *const palette = extradata + AV_RB16(extradata); int extra_space = 1; if (avctx->codec_tag == MKTAG('P', 'B', 'M', ' ') && s->ham == 4) @@ -389,7 +389,8 @@ static av_cold int decode_init(AVCodecContext *avctx) return AVERROR(ENOMEM); } - if ((err = extract_header(avctx)) < 0) + err = extract_header(avctx, avctx->extradata, avctx->extradata_size); + if (err < 0) return err; return 0; From patchwork Tue Jul 12 10:27:49 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36757 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:6da0:b0:8b:e47:9dbf with SMTP id wl32csp1909228pzb; Tue, 12 Jul 2022 03:28:47 -0700 (PDT) X-Google-Smtp-Source: AGRyM1s4NxaG17NrvU3izSIMe6/fTPbL5ZZ9Gaj7tA/BGisyKsO7sMUXaP+ipklN1myoCbNBL35H X-Received: by 2002:a17:906:5343:b0:722:ea54:fe67 with SMTP id j3-20020a170906534300b00722ea54fe67mr22930239ejo.181.1657621727540; Tue, 12 Jul 2022 03:28:47 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id l1-20020a170906a40100b006f3b5fbc9easi11052268ejz.904.2022.07.12.03.28.45; Tue, 12 Jul 2022 03:28:47 -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=@outlook.com header.s=selector1 header.b=O+k1JvIj; arc=fail (body hash mismatch); 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B7A9B68B8B2; Tue, 12 Jul 2022 13:28:37 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073026.outbound.protection.outlook.com [40.92.73.26]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3267468B88C for ; Tue, 12 Jul 2022 13:28:31 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FgBzZgqP1gR63fS97sChU3xbD23UhF+Rk//Jcxf8NvtgeaIOParwikHEKg42QszgWfSJuQTCrsO0hheXrhQAgSswOjtuJV0/mmyG02TYCNM8lh8GlAwtewwcSwcTLOK9x2FybvpcCctHHgIHGSIxfi3vDr1gB1hMsYMDAm7M0tjEk8vrfpCEWKHxY+aVunqZUG1dW4aZiMTbCqb4JD2P+graBK0RGMOZXkcLFtWreE5djKhDpKxy75I91pqY+933pAdK0/6zm5q7bI7dQzHVS/TMdg6MRUb60t+yLn4YMvgwyX/viASMUXTna/jN+99hLs9PcMIJyP86qg+2oTtJJA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Hd3d89gU/bFyypKFgyCx9IZU3MU5UAIU+8MMpxmNAIE=; b=Zf+NQsqonRVfb5MEB4Swk704A4n9GqVtEPhQITU41QipqOm+h25XRiYzA5f0zlsVG8cadJnF+6G8XD1hXlqQwF0lKtxU5FXIJeMrj4EGxq8EBk4m724noDz1R8wfLc0eggjpLxwkZEwMrUyloX2i25Ka4If8GL3/XVbb3B5VazxgtEv5qcu4jWvMCG2afXYCP2Lo1dFSjzShZDRwetx/pKw3LAnXARaQ325xbEU/eBIW+XRmiC2bw898sjaRdhOfBJsgTkqdlp3SSqsfTxua7CC0OY6mOGkiqYZn6Rop2sprYN//lDetnDivwUIk8CTWNMHyYaLcFIayZ3pr+YsUUg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Hd3d89gU/bFyypKFgyCx9IZU3MU5UAIU+8MMpxmNAIE=; b=O+k1JvIjYKk56z3g1lbUEP+JuBI8+x5XS4w49HX63Oz7HvpDObhgqZpA3ngvx/FLP7SzzP9mEEXJ26bSY1OmZqiIX/09XTMLH60THmP8U7YjJA2X8ThAbOkmOwUCpXWfFATkWNON8oQLgSs/It7IQfDZVX+BbYVXcMUjf2f4i9dujEwmyW7gOYsPDoZcBbPKCo4k8kItgMVb9Eadp1P2qmlHkbuANu4zQUgA+shhcht9bp6zYDrq5a2pbHG0Ow2LRS7fCjsepxOg2eZVt03NrwS9az5TO7hqNsUJScgmxC8DmG7P6sT0eKjkdfYyNcxzPZuEXDhiv1lp65WrGGp61A== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by VI1PR01MB4814.eurprd01.prod.exchangelabs.com (2603:10a6:803:92::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5417.25; Tue, 12 Jul 2022 10:28:25 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46%11]) with mapi id 15.20.5417.026; Tue, 12 Jul 2022 10:28:25 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 12 Jul 2022 12:27:49 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [XQLPmu4ALXDkI0QzwpBwk5UMZeJiV2cy] X-ClientProxiedBy: AS9PR07CA0048.eurprd07.prod.outlook.com (2603:10a6:20b:46b::15) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220712102751.3784996-4-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7f8863bf-6608-4ac4-da0d-08da63f140ad X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRJ0BC0M7R52QM1cuRSG6d3Jo/1Updn9AIgnJMxxGVdr/UA1RacJs5hvPxxk+rtvmkYOmEbnuuqcpMP+LphO4vooe6Y74lbrPSdqnz+O9sOVimzcZ26wdUTSRHwRFNCCq/Wha5EmWHjA0inuTPV5d2hmkOUIJDLZgw8dS3mULWSPFHieSUe6DyXTJ5sXzNbCCZgFQLyJAnp9oJhThF4Stce9yiomrliTmiiw2TDMc+HsRWw5qZKp/Zp9wLF/91t0TUc8NBs/2UDXbqeddVXsHanQDNvMewmijrE+YXBeKCHSb41Yi8eGSpMEIfZSv7pQ2/psicx071CnquZn9crhBhov2Y+N4nMd8CMb+D3GRoZfitjwZ7QU22gqaOrtdycXEJCrnWaHDsRmRBiKYwQZ0vIRzbnghZMg6rANJiwAm4ZauGqFGZ/HcNkS3DKUK7Os6/qgwVlkinLBsY6pQSzK9dCLBBSms+PkPUDoCLM/ZJ/2/c49b8hGQbglaZRQIE7oN/W8fsRukVtZHKq8Al3f7pg43X5NsWj5UWLDNR8dCPRAInxyEZqe+IcgKNaRpcR1JvLOqvVHXnN0TqlBg7aERNtByyhFoLOxmvbS7++nYaBsHpoXWdh13HI+MOY9hMs/ZCGAjYnWkq/VBHEJILr6WMCGq6POMoyvd5/B+singJ4q4XW08Eq6aopGXA7UYl34zdvq3C69BHcu9rxgVXEKUG38LXFeaaRjnzmYXKT7Y4EKgoZmB6JTw6CSPdYsYD7s5E= X-MS-TrafficTypeDiagnostic: VI1PR01MB4814:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: YwgrTh58M8p/aJ5MTC8cvlQ2e7+GK11zkv4dRpve+zy725XAfxA70hlYp2cibKSXzJUAg2ruLtD/RdV9AAYpS3GBTGCkB8mPIz+ohxXaHwvw99HUUDhsW3SF3KbNInq/d2gQqwl2rxxB5zkC5brWUFF6lKxGXXqfoCsH4ROYCK7Hh3f5xh11u4IHfuubo6cT/pS+Hj8vGBRiuQ/z8+UtaEFYa84si05Nskx+nfD68SbwJJDRsRobcBchHmADty7+joXnUBh18BYtcqsz4JDfl2f+s4QWcRsFAGgf8js29Jy5ABH0oHZUX2kE0KhYEQOyJmuoY5tjb0F3JBNMeYFE+Ja4VQbbeEeF8Ef9jpcHyO/nVDJz8JB7teupHfhXI62bTK7czc/VP/mo48YE5FM92h8CZWsoqr9Crpk8KBjjM0e0vsApeGkeZWixtvPWMT9d94Und7mhTifPV3WgaL9IC/HwVjbP1QkadQLzt8c8M6T1DE1G61i05hEZnAOnGiTB4qII6Ps/eGAx+jFpFYNiVEc+RegKx3z/270H0NBDqAvToPQiheUC6Y3S5/81ch8X9HxtPFFzbLrPEl2e+1CQFaGZPt2LjGOc7z1FhlM6BLJJRsbqj4ej/nQXQJfECbEXGW6q+bjUbu1ufPSe3xVo/mKlVrLKsNEBJUHSo60oVRSydqZoUNeKfHRlXLuWje4dM0Ssvrigw9roRuC5IoofkQ== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Rp1aUllgUSKjSjRG0XeLcCDVJJPNElp2B4B2CYsH1dTXypx2StQsfwMQfgcvyCIRSskusuGZ6IrT6neVw0TDF8uMKgS2UsX8eD+0H5wU8y8Qj/xZeoLv3nkYJFIYx4dGZSfmiry74DNwtlSz/zhNGeQkqCyYBw4m+BD+dq6alwHRGqy0cgEA3TVdiHmPEhshylhgw1SLALltKvWiTlTgWxNDmH3531lbnZ4sgbxg2WdD3+djPN/1uF00bfnHUKRAZ2DgEVVHGWQ7stEbSMCkSJNSwU6UAksQlY1RgQG/zL30O5ay1PJlSqz3bIVo8zMiW1+hX6BUuEcThjgYmGRxGBJOLGWVPlcsj7E9T8wg5leoudUzPDUqTs7NAyxHgu07AqX+Hf6OBuskQxCRDGcMuCWg3+2OUZP+K52O/meNK7T8+sZvvifHzHwBPwUt/0GxCsYYFLTz6GpG/KXud0Iw9foJ2M02bMXz632774hVYqSeLTmfYtZCV+z/wBtDFvCmMWHYGx4jXFZmWFSiGGi+k0MC1Rs7Nwb/Uufq8WvVxLWgL8Hw7q0jczO/Z+862JO4EPYsPAPiywtFQYzC1EqBaXHSsQvOX5RZCAjbEsLW4T+44ka4yD8+83+f2GLoLcp2iBDf7pNgeH1gHJbgOmsBvOf9ApshFEGVOpISOVMaIldhBIOUJZ/RWxykaSUZ7qkxNlmaO0Mbabg9QBLyXpQuVyi3x4UJxgq+rVp5gfqzVZfxqeH+vMtHITn0lXT2pfJ5u2ZP4IQ/sAD1OJi9kUarC/lbXDodVV8ZiwieobSl4jLbOufbZYK+1QqZ1p257wY3bXbc3msbfZolEqKzhy45lzY9GCyJQ/bPeYjvVnW94XhPBkCXP1VeMHnNVlSroVAlnZ2nF4ePgmUvMJgFmnV840xaCIWNBXF0apHDEPCzj2JLEtdNQczVIHksc8hrFRAfk02Ns0l5OEghves9lVrsmajms2VJjBInyyKkz0LKCSU4Qj5/GSqRw5cagt/jkiM07xqaCSppcstS62c2gZf6mFDLlDrzFGqlbFAdzyZzqsqpnEC74CuuM1RlC25BfdKKTdlqAHkqpHuA4IhSLE8KC50EgnkLSSjBgGvjUrX8io+iCEcR/SL9xBBu+AjrKptvAsLv0b5HfJMNiSfN2X33C6c9cliWp3++BI9jw0z1DGa+p5pxojYLAnnEggXzQAtRlxq/PBZe/Pr94vLP3MsN0lHg1njBRI6P3Cgdw4ef2cH+XvUPMcpfIYJ/Kvc1uVJvI2X6XXD1/+dDBd8YXVq3WCemToQ1PT+JpswI+jQ7dtU= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7f8863bf-6608-4ac4-da0d-08da63f140ad X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jul 2022 10:28:25.2874 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR01MB4814 Subject: [FFmpeg-devel] [PATCH 5/7] avcodec/iff: Reindent after the previous commits 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: /tLpySgmguCK Signed-off-by: Andreas Rheinhardt --- libavcodec/iff.c | 260 +++++++++++++++++++++++------------------------ 1 file changed, 128 insertions(+), 132 deletions(-) diff --git a/libavcodec/iff.c b/libavcodec/iff.c index 453e910982..00d0105be3 100644 --- a/libavcodec/iff.c +++ b/libavcodec/iff.c @@ -207,7 +207,7 @@ static int extract_header(AVCodecContext *const avctx, IffContext *s = avctx->priv_data; const uint8_t *buf = extradata; unsigned buf_size = 0; - int i, palette_size; + int palette_size; if (extradata_size < 2) { av_log(avctx, AV_LOG_ERROR, "not enough extradata\n"); @@ -215,109 +215,109 @@ static int extract_header(AVCodecContext *const avctx, } palette_size = extradata_size - AV_RB16(extradata); - buf_size = bytestream_get_be16(&buf); - if (buf_size <= 1 || palette_size < 0) { - av_log(avctx, AV_LOG_ERROR, - "Invalid palette size received: %u -> palette data offset: %d\n", - buf_size, palette_size); - return AVERROR_INVALIDDATA; - } + buf_size = bytestream_get_be16(&buf); + if (buf_size <= 1 || palette_size < 0) { + av_log(avctx, AV_LOG_ERROR, + "Invalid palette size received: %u -> palette data offset: %d\n", + buf_size, palette_size); + return AVERROR_INVALIDDATA; + } if (buf_size < 41) return 0; - s->compression = bytestream_get_byte(&buf); - s->bpp = bytestream_get_byte(&buf); - s->ham = bytestream_get_byte(&buf); - s->flags = bytestream_get_byte(&buf); - s->transparency = bytestream_get_be16(&buf); - s->masking = bytestream_get_byte(&buf); - for (i = 0; i < 16; i++) - s->tvdc[i] = bytestream_get_be16(&buf); - - if (s->ham) { - if (s->bpp > 8) { - av_log(avctx, AV_LOG_ERROR, "Invalid number of hold bits for HAM: %u\n", s->ham); - return AVERROR_INVALIDDATA; - } else if (s->ham != (s->bpp > 6 ? 6 : 4)) { - av_log(avctx, AV_LOG_ERROR, "Invalid number of hold bits for HAM: %u, BPP: %u\n", s->ham, s->bpp); - return AVERROR_INVALIDDATA; - } + s->compression = bytestream_get_byte(&buf); + s->bpp = bytestream_get_byte(&buf); + s->ham = bytestream_get_byte(&buf); + s->flags = bytestream_get_byte(&buf); + s->transparency = bytestream_get_be16(&buf); + s->masking = bytestream_get_byte(&buf); + for (int i = 0; i < 16; i++) + s->tvdc[i] = bytestream_get_be16(&buf); + + if (s->ham) { + if (s->bpp > 8) { + av_log(avctx, AV_LOG_ERROR, "Invalid number of hold bits for HAM: %u\n", s->ham); + return AVERROR_INVALIDDATA; + } else if (s->ham != (s->bpp > 6 ? 6 : 4)) { + av_log(avctx, AV_LOG_ERROR, "Invalid number of hold bits for HAM: %u, BPP: %u\n", s->ham, s->bpp); + return AVERROR_INVALIDDATA; } + } - if (s->masking == MASK_HAS_MASK) { - if (s->bpp >= 8 && !s->ham) { - avctx->pix_fmt = AV_PIX_FMT_RGB32; - if (s->bpp > 16) { - av_log(avctx, AV_LOG_ERROR, "bpp %d too large for palette\n", s->bpp); - return AVERROR(ENOMEM); - } - s->mask_buf = av_malloc((s->planesize * 32) + AV_INPUT_BUFFER_PADDING_SIZE); - if (!s->mask_buf) - return AVERROR(ENOMEM); - s->mask_palbuf = av_malloc((2 << s->bpp) * sizeof(uint32_t) + AV_INPUT_BUFFER_PADDING_SIZE); - if (!s->mask_palbuf) - return AVERROR(ENOMEM); + if (s->masking == MASK_HAS_MASK) { + if (s->bpp >= 8 && !s->ham) { + avctx->pix_fmt = AV_PIX_FMT_RGB32; + if (s->bpp > 16) { + av_log(avctx, AV_LOG_ERROR, "bpp %d too large for palette\n", s->bpp); + return AVERROR(ENOMEM); } - s->bpp++; - } else if (s->masking != MASK_NONE && s->masking != MASK_HAS_TRANSPARENT_COLOR) { - av_log(avctx, AV_LOG_ERROR, "Masking not supported\n"); - return AVERROR_PATCHWELCOME; - } - if (!s->bpp || s->bpp > 32) { - av_log(avctx, AV_LOG_ERROR, "Invalid number of bitplanes: %u\n", s->bpp); - return AVERROR_INVALIDDATA; + s->mask_buf = av_malloc((s->planesize * 32) + AV_INPUT_BUFFER_PADDING_SIZE); + if (!s->mask_buf) + return AVERROR(ENOMEM); + s->mask_palbuf = av_malloc((2 << s->bpp) * sizeof(uint32_t) + AV_INPUT_BUFFER_PADDING_SIZE); + if (!s->mask_palbuf) + return AVERROR(ENOMEM); } - if (s->video_size && s->planesize * s->bpp * avctx->height > s->video_size) - return AVERROR_INVALIDDATA; + s->bpp++; + } else if (s->masking != MASK_NONE && s->masking != MASK_HAS_TRANSPARENT_COLOR) { + av_log(avctx, AV_LOG_ERROR, "Masking not supported\n"); + return AVERROR_PATCHWELCOME; + } + if (!s->bpp || s->bpp > 32) { + av_log(avctx, AV_LOG_ERROR, "Invalid number of bitplanes: %u\n", s->bpp); + return AVERROR_INVALIDDATA; + } + if (s->video_size && s->planesize * s->bpp * avctx->height > s->video_size) + return AVERROR_INVALIDDATA; - if (s->ham) { - int i, count = FFMIN(palette_size / 3, 1 << s->ham); - int ham_count; - const uint8_t *const palette = extradata + AV_RB16(extradata); - int extra_space = 1; + if (s->ham) { + int count = FFMIN(palette_size / 3, 1 << s->ham); + int ham_count; + const uint8_t *const palette = extradata + AV_RB16(extradata); + int extra_space = 1; - if (avctx->codec_tag == MKTAG('P', 'B', 'M', ' ') && s->ham == 4) - extra_space = 4; + if (avctx->codec_tag == MKTAG('P', 'B', 'M', ' ') && s->ham == 4) + extra_space = 4; - s->ham_buf = av_malloc((s->planesize * 8) + AV_INPUT_BUFFER_PADDING_SIZE); - if (!s->ham_buf) - return AVERROR(ENOMEM); + s->ham_buf = av_malloc((s->planesize * 8) + AV_INPUT_BUFFER_PADDING_SIZE); + if (!s->ham_buf) + return AVERROR(ENOMEM); - ham_count = 8 * (1 << s->ham); - s->ham_palbuf = av_malloc(extra_space * (ham_count << !!(s->masking == MASK_HAS_MASK)) * sizeof (uint32_t) + AV_INPUT_BUFFER_PADDING_SIZE); - if (!s->ham_palbuf) - return AVERROR(ENOMEM); + ham_count = 8 * (1 << s->ham); + s->ham_palbuf = av_malloc(extra_space * (ham_count << !!(s->masking == MASK_HAS_MASK)) * sizeof (uint32_t) + AV_INPUT_BUFFER_PADDING_SIZE); + if (!s->ham_palbuf) + return AVERROR(ENOMEM); - if (count) { // HAM with color palette attached - // prefill with black and palette and set HAM take direct value mask to zero - memset(s->ham_palbuf, 0, (1 << s->ham) * 2 * sizeof (uint32_t)); - for (i=0; i < count; i++) { - s->ham_palbuf[i*2+1] = 0xFF000000 | AV_RL24(palette + i*3); - } - count = 1 << s->ham; - } else { // HAM with grayscale color palette - count = 1 << s->ham; - for (i=0; i < count; i++) { - s->ham_palbuf[i*2] = 0xFF000000; // take direct color value from palette - s->ham_palbuf[i*2+1] = 0xFF000000 | av_le2ne32(gray2rgb((i * 255) >> s->ham)); - } - } - for (i=0; i < count; i++) { - uint32_t tmp = i << (8 - s->ham); - tmp |= tmp >> s->ham; - s->ham_palbuf[(i+count)*2] = 0xFF00FFFF; // just modify blue color component - s->ham_palbuf[(i+count*2)*2] = 0xFFFFFF00; // just modify red color component - s->ham_palbuf[(i+count*3)*2] = 0xFFFF00FF; // just modify green color component - s->ham_palbuf[(i+count)*2+1] = 0xFF000000 | tmp << 16; - s->ham_palbuf[(i+count*2)*2+1] = 0xFF000000 | tmp; - s->ham_palbuf[(i+count*3)*2+1] = 0xFF000000 | tmp << 8; + if (count) { // HAM with color palette attached + // prefill with black and palette and set HAM take direct value mask to zero + memset(s->ham_palbuf, 0, (1 << s->ham) * 2 * sizeof (uint32_t)); + for (int i = 0; i < count; i++) { + s->ham_palbuf[i*2+1] = 0xFF000000 | AV_RL24(palette + i*3); } - if (s->masking == MASK_HAS_MASK) { - for (i = 0; i < ham_count; i++) - s->ham_palbuf[(1 << s->bpp) + i] = s->ham_palbuf[i] | 0xFF000000; + count = 1 << s->ham; + } else { // HAM with grayscale color palette + count = 1 << s->ham; + for (int i = 0; i < count; i++) { + s->ham_palbuf[i*2] = 0xFF000000; // take direct color value from palette + s->ham_palbuf[i*2+1] = 0xFF000000 | av_le2ne32(gray2rgb((i * 255) >> s->ham)); } } + for (int i = 0; i < count; i++) { + uint32_t tmp = i << (8 - s->ham); + tmp |= tmp >> s->ham; + s->ham_palbuf[(i+count)*2] = 0xFF00FFFF; // just modify blue color component + s->ham_palbuf[(i+count*2)*2] = 0xFFFFFF00; // just modify red color component + s->ham_palbuf[(i+count*3)*2] = 0xFFFF00FF; // just modify green color component + s->ham_palbuf[(i+count)*2+1] = 0xFF000000 | tmp << 16; + s->ham_palbuf[(i+count*2)*2+1] = 0xFF000000 | tmp; + s->ham_palbuf[(i+count*3)*2+1] = 0xFF000000 | tmp << 8; + } + if (s->masking == MASK_HAS_MASK) { + for (int i = 0; i < ham_count; i++) + s->ham_palbuf[(1 << s->bpp) + i] = s->ham_palbuf[i] | 0xFF000000; + } + } return 0; } @@ -1470,57 +1470,53 @@ static int parse_packet_header(AVCodecContext *const avctx, GetByteContext *gb) { IffContext *s = avctx->priv_data; - int i; - - uint32_t chunk_id; - uint64_t data_size; if (avctx->codec_tag != MKTAG('A', 'N', 'I', 'M')) return 0; - bytestream2_skip(gb, 4); - while (bytestream2_get_bytes_left(gb) >= 1) { - chunk_id = bytestream2_get_le32(gb); - data_size = bytestream2_get_be32(gb); - - if (chunk_id == MKTAG('B', 'M', 'H', 'D')) { - bytestream2_skip(gb, data_size + (data_size & 1)); - } else if (chunk_id == MKTAG('A', 'N', 'H', 'D')) { - unsigned extra; - if (data_size < 40) - return AVERROR_INVALIDDATA; - - s->compression = (bytestream2_get_byte(gb) << 8) | (s->compression & 0xFF); - bytestream2_skip(gb, 19); - extra = bytestream2_get_be32(gb); - s->is_short = !(extra & 1); - s->is_brush = extra == 2; - s->is_interlaced = !!(extra & 0x40); - data_size -= 24; - bytestream2_skip(gb, data_size + (data_size & 1)); - } else if (chunk_id == MKTAG('D', 'L', 'T', 'A') || - chunk_id == MKTAG('B', 'O', 'D', 'Y')) { - if (chunk_id == MKTAG('B','O','D','Y')) - s->compression &= 0xFF; - break; - } else if (chunk_id == MKTAG('C', 'M', 'A', 'P')) { - int count = data_size / 3; - uint32_t *pal = s->pal; - - if (count > 256) - return AVERROR_INVALIDDATA; - if (s->ham) { - for (i = 0; i < count; i++) - pal[i] = 0xFF000000 | bytestream2_get_le24(gb); - } else { - for (i = 0; i < count; i++) - pal[i] = 0xFF000000 | bytestream2_get_be24(gb); - } - bytestream2_skip(gb, data_size & 1); + bytestream2_skip(gb, 4); + while (bytestream2_get_bytes_left(gb) >= 1) { + uint32_t chunk_id = bytestream2_get_le32(gb); + uint64_t data_size = bytestream2_get_be32(gb); + + if (chunk_id == MKTAG('B', 'M', 'H', 'D')) { + bytestream2_skip(gb, data_size + (data_size & 1)); + } else if (chunk_id == MKTAG('A', 'N', 'H', 'D')) { + unsigned extra; + if (data_size < 40) + return AVERROR_INVALIDDATA; + + s->compression = (bytestream2_get_byte(gb) << 8) | (s->compression & 0xFF); + bytestream2_skip(gb, 19); + extra = bytestream2_get_be32(gb); + s->is_short = !(extra & 1); + s->is_brush = extra == 2; + s->is_interlaced = !!(extra & 0x40); + data_size -= 24; + bytestream2_skip(gb, data_size + (data_size & 1)); + } else if (chunk_id == MKTAG('D', 'L', 'T', 'A') || + chunk_id == MKTAG('B', 'O', 'D', 'Y')) { + if (chunk_id == MKTAG('B','O','D','Y')) + s->compression &= 0xFF; + break; + } else if (chunk_id == MKTAG('C', 'M', 'A', 'P')) { + int count = data_size / 3; + uint32_t *pal = s->pal; + + if (count > 256) + return AVERROR_INVALIDDATA; + if (s->ham) { + for (int i = 0; i < count; i++) + pal[i] = 0xFF000000 | bytestream2_get_le24(gb); } else { - bytestream2_skip(gb, data_size + (data_size&1)); + for (int i = 0; i < count; i++) + pal[i] = 0xFF000000 | bytestream2_get_be24(gb); } + bytestream2_skip(gb, data_size & 1); + } else { + bytestream2_skip(gb, data_size + (data_size&1)); } + } return 0; } From patchwork Tue Jul 12 10:27:50 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36758 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:6da0:b0:8b:e47:9dbf with SMTP id wl32csp1909279pzb; Tue, 12 Jul 2022 03:28:56 -0700 (PDT) X-Google-Smtp-Source: AGRyM1vUfVRNFkSEnJE/fKG65GURALGSP4IvjwF19HR3mKIhmFpbqJ0mFcwKSSY3fd3ceqK/4UMX X-Received: by 2002:a17:906:7482:b0:722:edf9:e72f with SMTP id e2-20020a170906748200b00722edf9e72fmr23336941ejl.92.1657621736500; Tue, 12 Jul 2022 03:28:56 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id w9-20020a056402070900b0043ac67a2fe7si10066353edx.456.2022.07.12.03.28.55; Tue, 12 Jul 2022 03:28:56 -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=@outlook.com header.s=selector1 header.b=DbmhKyqx; arc=fail (body hash mismatch); 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8923F68B88C; Tue, 12 Jul 2022 13:28:38 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073026.outbound.protection.outlook.com [40.92.73.26]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 76ADF68B88C for ; Tue, 12 Jul 2022 13:28:36 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RidnPIjZL9FDo2N1O4aCzvLsZao6cyYSyNfPkbOBYbrHro7kI8iqY9o4zrCv7heih6S5nisQ62VmEmRtIo488MoYKwbNCBO0Y06TVSJtAWgaaV4Gnh0uMORWiMowtDIlICCGw3tebzmTYPr0V0hiV4fuyfwRjOYgZb4+Afvlh4k6ooH3OJJC+uNnG9IjC/V83myOjKm5iKxwEJSXBbGTBnB7TPlB5Adwiwvan8S0j2cTCZCAZnfi2oI/YlHwdCpReWLta5Ha3+EGHy+Zs01ApDFTMdikxnW6SubKRZrjHXSofUerPcQ8vo80FT3hU2KZfBasHRDTH7UfzFFPpu2/Ig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=/5vm75cXj+DzTCiZYn5VrVTzBdQDrn+AcTmrQT86iqU=; b=N5Ri1wShW46eFtzOVlSOWQXX+gcSJ2Jq59dfIRJwDQwqHslJlADDgFZ8Hr+heTZkSijRYptj8zPA62pQ/QAlKCmx380C/KkGN/XD+kfoqBmcVNg2kdR3oZmDYu2ym5c9KkExcyxxYKDGKldyIK2MnWf5nff3eFM5l/9ck3LNYvSncCE+L2IoBIXXX2qAIx3qAbynupY6PbRNWZBxhtgbF2y5kUlp+ecQ5Jza3n1XNhN27yraOQ285CC5RaOKcrdd62Y6Lp72B4ZqIANfKS7HsUqghOdwqTlrg/zYUNgFyfSpcAPRfNxCVdHBduazNiB1h5LRkKZsNgXj2NTq0K59Zg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/5vm75cXj+DzTCiZYn5VrVTzBdQDrn+AcTmrQT86iqU=; b=DbmhKyqxSxHZw7M8k5awYa1DNiiJKraUYA34qGYkhB06WmzhtGNClxHuhGeKhtpnp2e3jsJ6GzaD4/ha28bXCRCcZFi3yZmEL6SOUdTR9PvQmR1AHxxUsJ+9RBGrAvpRMOqh1pJj2/MQE/fIAy6ps3JU1zYcqKRomDCCz33Ln3ulMF7wRUwUZy/1Foxx4i8xsZ2NmFX25AC34o6VoulwaimhIR8Z4tiFU9wc55aw/kHwboYKqa65qRPSz4+3P1sqcbnuObVm6gkRe3/SqCc978fx4jrI78aeur0qD0zLryfu/4KfIio9HcuRAAxdn7phY6OOvhm97orJnOxbNPxU9Q== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by VI1PR01MB4814.eurprd01.prod.exchangelabs.com (2603:10a6:803:92::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5417.25; Tue, 12 Jul 2022 10:28:26 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46%11]) with mapi id 15.20.5417.026; Tue, 12 Jul 2022 10:28:26 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 12 Jul 2022 12:27:50 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [/f7silDzgYuy88UR6I0f4RmEadytH9ah] X-ClientProxiedBy: AS9PR07CA0048.eurprd07.prod.outlook.com (2603:10a6:20b:46b::15) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220712102751.3784996-5-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 804b5357-a4c9-47aa-5966-08da63f14152 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRJ0BC0M7R52QM1cuRSG6d3pObdzU5EJEpeowTdc3e9jmkFOib0Cgntcx6i4+Y7F3bCqYgo1n0kZHJ/VEvsnpQIhksbPX3NqbjoCvx4y6hlR9QW7ZHmsTUD+p+VinQM4HvUNVk8+o1CuoMsLwOFS8m/TCzEkl5rqPaoXkGepsT0aNPCEid8lgzDrBGn17BTs7KXsC8NrhEYLSGBBhDrvdF0spTKYKkxOdmaBAtftS5aPcDswMp8zMTe8RKh++kiY4cUSUG6+gIeUh4G6Qkc0Es4u19t55yY7tjlFAAwqF5I6DP1xW1d024vD5GCY4OYnYWp4BTPF2Acm/LZwdlOWen6GD9PaVIVNVWYJT+JI9lRMFhRn1asG4pzBBo/OkJHBfR2q78/FuVifGx/7EBF/8xJyXT+f3aT/4FxYUOSC1uT4Akgz2uhcZg+ykWh0BANasJUgtNUEo9GzTWtS1Mf6SR+ikimISIISNBzxfFouZ+g8E+2tUutkN4ZshjvptIVsgkzoO18Dcpv4BHj05E/HT777zI3I40TW+hqZiD1nNla49F18A93pVQapVvbWXbO5K1GhN1qUT//RfmVhMNAjRBQbVPw3KmCZVnXc/tJk/LbDZQ9owkobRJOHLi9caPSnw3tyjxdJ8QeU4uC3azPBBb0zcrFX6cSJABHnb9whRuzS/UYViMzb+Wn0phXTAyXeCvYeeIsNfjR8q0CLu+dBmgT+qJBqmjBQODcEL7PCsp/6smN5dkw+XLCQKpHjKmiUUM= X-MS-TrafficTypeDiagnostic: VI1PR01MB4814:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ypINeja4XTs8PtQONL4LuxGOtd14FoLei72m0c9FnhYPTlYbQdwxPv6rkwE/pnSN7OOVPzuywIYpZvY6cySUJLozTmFnzbU9cUahAgEWgSywGnaRT8wOF8lwTcZ2sOlDcSLgQjqFPVTKsQImKWiNxHhbbHsq7d9yg7WOKvQEGv27pwzrcXg7LkJn024m+GUCYX9o/Bw/TApfftNBFfHsVybFhM8+U+mVf4e6mMdHv4kI/1i7GE5RBaAKqEtoAYbYQZD+xPbyV/9RL4z/P+hwSzr0z22uO9vrOupQe/G8bziKhVX93LZiGJbFMBEvKeLKnTd/glr20Udzjfmc3OqO/3qh5lICPCiUTOXAKGFUh93D2atlTyGzGT/H1mAJ6Ydmkb75cTMEDQ2x+IY27PR5q4MDraIvo+tIbGMQfSxuORU0t7cj/UgpNYl+LNmcJVQwgzJMl6cuslMCUUJ4cGHZ3SlevkVZApQVOtBQ90h5tCF45vSE2Wdptct4M6SNxtZQ6hSGw1Y4Xx+HuYVRIIPsGzabWtJOT53EKPY0DuAfXo4eXb9lkVpaywCRojFLFgE2nU3QJ6o8G8Pi+dCrXZgPBzgYNl2bdW0VkozeAIajf+R4m6HDsRPh9veKil5YLCXEjM1/6ZF1VYSFHReKJGX2tAgT90c1KjyJ5PlISjod18eukUmUBAkQUqaRt6xN3s/SFNmXslbEH9fKweZ+ypFfNg== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: uuBFzY5DvmKwIM42m2H9YJFtd3ldzuO2dRagxUOQQwk5gKES22EJ2QPCaZXUOQ/Gh+tTvt5mdW1+Xl98pP0ycYdW3JxMXd0JrjFS+1g0m0voOOK7QwNIHJHPb5yyllr83j/1AHdXbEhfjTqYe98mjXH15KIlveVGjDhq/zaj78pzUQR7lOBzptcaJxw2mTXzj5x2tvOnS5XMo3foDFrdOXNidFspi+1+nLc7T1pkNWP01a1jhLBmwopZ28xypyaCZxxWmwV4VqO6h4sQrGKwOAuCfD86TahV6PEio/8Zu+Mtc3v6sueITg5vUQsCYnAqOJ55Qmo9e+EHpkvDqnRg0D2H75mMWMES5HdBEWqLRCwhcrDewS89ml6F5ihZ0s9wnxVo0rI0zqRr2gEEZ/+Jhys4lVgNBjszwqyiBoBlBNZldkSa7kf4uhBlxNmKN/ferjNVPAHrWUE8OwJkRQ771ZLsq4MZO9PcSZpRflnMLRsYQ7kyh/qwhgcXMN6ZA48arjTLBmqTKwhDH9DygK8ucW5HN0rF+2DwXZtqCe6Bqs+l+M7XCFoYj+WqXNH+JMAbqFtATaE2LaW2tgwL8NrSg0ax1Fg8FnlHPd4erzsqDYikxYJOvlBK7tUW0vstYABwCOY5+hFhLtbRXT1bF8T/XbnnLPEU0XdpG/r9lSFwPlu41NcIcj7vnZNYgIfJ80bd66vbUEU47DeRR5MOFKsmmKcyvX6M0mbayOikM7bCZspbOui5kMmdW7Z0Dwm2c/yybDUTHWDEyyCrMNfRgmGk8js56b1a0sAPg4tkhbwUdCvkpMykNRM6eWkEo2j5RwI9UgyYxiLZrpL8v6P2PsYtv86gtr44sT4UbXtluKt72/40GesJuqpplmUnmhPR+Vj3HCw9frd/b0TjgWcyP8L2zG4ZA/s4nnuc97fLab2erN09RXlTmELG9A2v8NIVPf4Q/10eg6DAqjpXHsuaYIW2iOP3mRIcZvQv1fHTWQzXYJtLYuSBu4p3E87FVSJGKMtUyy4U7Aqs9tWdQ5geIkYKu/VV47wo3GRItTPXVjSTM42ODBSwtDGdWVREZ3EQu6JlO23VpAHZ+OvpQ+Qs/h1YL4C6cgwil97mEk3qyDucZpffN/cYyphJjUkzWvCejmolOw3hHz5YNo4FFv/fnFchRVHS0T45gU3cdGT7tRFgoBn2zASoRDOZh2VDAoXDOfA2mSaoAeOLiSprNpP7LxYuBQ83z93gKekkIMCUufMJN2jt3LsSE8qm4KpSav2n88l4qg5BMxupJB8pDdgXHuFR2DRpkT6s6D8drt4atrukR8c= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 804b5357-a4c9-47aa-5966-08da63f14152 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jul 2022 10:28:26.3186 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR01MB4814 Subject: [FFmpeg-devel] [PATCH 6/7] avcodec/iff: Remove transient objects from the context 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 4zTzyVjo1ow7 This avoids keeping invalid pointers in the context. Signed-off-by: Andreas Rheinhardt --- libavcodec/iff.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/libavcodec/iff.c b/libavcodec/iff.c index 00d0105be3..ad96bd9191 100644 --- a/libavcodec/iff.c +++ b/libavcodec/iff.c @@ -45,7 +45,6 @@ typedef enum { } mask_type; typedef struct IffContext { - AVFrame *frame; int planesize; uint8_t * planebuf; uint8_t * ham_buf; ///< temporary buffer for planar to chunky conversation @@ -63,7 +62,6 @@ typedef struct IffContext { unsigned masking; ///< TODO: masking method used int init; // 1 if buffer and palette data already initialized, 0 otherwise int16_t tvdc[16]; ///< TVDC lookup table - GetByteContext gb; uint8_t *video[2]; unsigned video_size; uint32_t *pal; @@ -1529,7 +1527,7 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *frame, int buf_size = avpkt->size; const uint8_t *buf_end = buf + buf_size; int y, plane, res; - GetByteContext *gb = &s->gb; + GetByteContext gb0, *const gb = &gb0; const AVPixFmtDescriptor *desc; bytestream2_init(gb, avpkt->data, avpkt->size); @@ -1539,7 +1537,6 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *frame, if ((res = ff_get_buffer(avctx, frame, 0)) < 0) return res; - s->frame = frame; buf += bytestream2_tell(gb); buf_size -= bytestream2_tell(gb); @@ -1558,7 +1555,7 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *frame, if (s->compression <= 0xff && (avctx->codec_tag == MKTAG('A', 'N', 'I', 'M'))) { if (avctx->pix_fmt == AV_PIX_FMT_PAL8) - memcpy(s->pal, s->frame->data[1], 256 * 4); + memcpy(s->pal, frame->data[1], 256 * 4); } switch (s->compression) { From patchwork Tue Jul 12 10:27:51 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36759 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:6da0:b0:8b:e47:9dbf with SMTP id wl32csp1909341pzb; Tue, 12 Jul 2022 03:29:05 -0700 (PDT) X-Google-Smtp-Source: AGRyM1skWD7NyEmZ3Jw7lVUzwCCC+HAtqdzHqcSNIpKwWbdlW1cwWjXqv75B5U/oVw1E6y9Q2z+X X-Received: by 2002:a17:906:6d91:b0:715:7d4e:84a2 with SMTP id h17-20020a1709066d9100b007157d4e84a2mr22052597ejt.504.1657621745273; Tue, 12 Jul 2022 03:29:05 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id l18-20020a170906795200b0071203baa0desi13856195ejo.260.2022.07.12.03.29.04; Tue, 12 Jul 2022 03:29:05 -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=@outlook.com header.s=selector1 header.b="d/5Q59F9"; arc=fail (body hash mismatch); 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 638ED68009F; Tue, 12 Jul 2022 13:28:39 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-oln040092073026.outbound.protection.outlook.com [40.92.73.26]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A51D168B88C for ; Tue, 12 Jul 2022 13:28:36 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aCeQK2ycWfU0cmxdZqJjWeWkC9Lv/jYEF0V8SUlvdGL58W0cCBH+LngQy5EvjTBwwrgLwhKlo4YYkpD2LX7fKwD9Bv0DMUEbJYnFRBxw4yB+5miM3LyY7um/n2PoE6QBmgAHovcx3kS1W/LhNL7DJ9nQXhaH7LBLeQFygTFROEehMiO9PzIxJ0wJ1bU9c0NMSnDvYYzosApOLjWrZiFhF4fiq7qfcubedH5F8b/cCx0fjuwLCDWGmSG9R5bB9zTl5aGl8UlgiKUD7fA91Hrn2j0P708XSUvJqkXuiod6+oTM1E4/Stqc8L57/rtC6ECTucxqFiLTiCx2m23ZiKDcug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=I2kJ7xL1dhAppTtXo9ruvG3Yhic0swg7F8Eiun21ZwI=; b=idUJkNOdjKVHb7rvjc8D9Ric94EDBKICM9HjNNgLiBRNFyuHh81YOiu5QcJv2FU+DAxK0uU1ewP0TL8lDsI9cQr6SwD8u/6e9JlXwZgRwrQVZNjFK/OeNawN0Ex8zToNlRtIa7EZhNL7/EYUDns5kz5DPaB497y/9cfya2OVzsHawLFMoQxVIroYlud4T1U2upved6U7KTV2ZYIibyNVeh4YJ+ZF2L6Q71FId+6vyxtO1xh35QhZE4Q4pw7NeFS2adfFjxNk2Wp8eqmbFxnUZwbDIGCyUJVeO3Ymzs5hi0hLJ2ZxY7w7Hvp8fwF9x018zJhWgD+KnlMwOUIlaXjgEw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=I2kJ7xL1dhAppTtXo9ruvG3Yhic0swg7F8Eiun21ZwI=; b=d/5Q59F9ZWaeiqsj/pnQJUO9wTLZpoRYj6nCBeLx2XfgNTbWZTxZFCEewIAh6B7gj+E+Ua2ZFNWdWitHVO9kapV0uquFO0MNQBBcFACl+NhkfpysLNF4CX60s/QqKMGPhnuPO/k0Ka5djqgj+rOGpmChxMx/6rVdyLN41baMYdobGLjziL2da1Me81HTcpRhSr2MXxgXIq6BZzXvlwJPwuurLfaeXm0s3yuf9fl9dFxnEoBVZFqkgqV3zXTWHM+GCWtUmFyniym3OqiVJ1E7Q+VvqlvE2S08wlFnOcht52u9CKvg4bVH8W2kTMNWMJ6MHD6D8fxdKuS7ulkY0S4+Bg== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by VI1PR01MB4814.eurprd01.prod.exchangelabs.com (2603:10a6:803:92::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5417.25; Tue, 12 Jul 2022 10:28:27 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46%11]) with mapi id 15.20.5417.026; Tue, 12 Jul 2022 10:28:27 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 12 Jul 2022 12:27:51 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [GOWCjiTliw+0bkxGZKarmSHLhQjsaVen] X-ClientProxiedBy: AS9PR07CA0048.eurprd07.prod.outlook.com (2603:10a6:20b:46b::15) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220712102751.3784996-6-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: fbf9b38a-eddd-47ab-fdab-08da63f1421c X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNXMm18b5TlTbUk9d1Jz4Ba7aQyBo7ZvaFBC5hSTb+ta/+jqabwWp3n+ej/6XnSOdqB7e8uwT4T7pgU5sRxM4NpRBohz1JuR9IRXNyVSoOcqgNa3MmkKHOlAtqVF/B24bWVxzG25wyw3B2PK2hj36FshB4i7cgvQYIWy+Lw6lWiTRPH8FeXFArkrQI4JfR5wxwVBOX3qH1FPe7PtiIUIRtHHK+lL45PPLdCqWmxli9dCzNQJkjlMPVKQ0RRAe5UXnvpvXrieNtwxmMLiq9s4xn54xgrB5waPEc2bcSEJodrLWpbTEhmRtfE525JDdVR2v0Abn/uxojx5CPxk+I2LRUMIdh5on8H7Gadvdd8vcE5hNjNH3A6u/xdXCRVD9iUZ4WfuEvF46ZPIFiiyxt/uM5l17m/OoWsO/fGNbxdg9lI870n6CItzPHXOYeI512mvFTAQXZiDXpHh3Z+UGLu9uG6ZatH98FylJzwH0HBnwBUnpzWeWNu/LB507rlbIk7DR4+AwAaBIDCNyrWaNJzzPzJAbAinVQRY9euDf9QnHfvyphgFcasnT7CqcaNzn8POM+ucl2tPJ6xC/9E/numUjgN6DeGNnuvxFxTAKVY1Ec8CjRQO6NM9tspktr+d5jGMAKQnSjuIYllgSSTVjA4g8zxHp6dQU2Hjs9GVwb/NWiyinxJAqhwcmXSIBxHKHnFFTh70MnkSfEqJ/UVfE00IL6C/+HPs2EZjI4s= X-MS-TrafficTypeDiagnostic: VI1PR01MB4814:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KL8F/RaWN+1vAWoAxi5Z6Ochd0hOm+eTP+wqdWtohFWkhMm/NfZMFH/cSf9zeiJ4MgzQEEM++B3ln0AVZp6un3hNxu1KttgRb+lYHf+1K0bV6UEhF32sjPpTgUEqNUkI9PkoTH9dqpVuZz4Us1TeRiXDmivpDM0p45IQNyD5Y7YpLaqXwRyTz6ovqKCZw8o4caZwNhRG7bxjt6mnUOC2PdJEHW3niMnS9nOZNFd3XfUIwtK1LioQVjs2LqdJxirM1eVON33S1f2mbF3+fklSbY74b+3FtOYgyFjr8M5dQ3GAckUgJXChny/RN13v963rWJIWzmdp6TRP7g3v21cRuO1lylvSZXXshqsd0Y+HuCNlunZMyJLhkgOzpS/Zp8O8yt1BQGLwpvLwnnA2oiMbRKC0PhqV1bJHsOHDNP98Wi1fZIQoCJDNYrJUWRxGgPQkU0LzFOKWIlzXoeg9yICCeSLdK4hA+3aFl1wp/2vKNZAD5nYwbaH2jHATQ+r/thhnPARoe9xql0koO3GVwTTwlimq+UpVpOQm+E27fzZGkNjh30USVZQmDd1Dl1XkZZ989iv5/3OcJthJySTr3McFE5/J5gVkOSR4r+u6Wc79UvMm4/sH2TcByERrzzzDGu1ZWWtGu9wLoeYzpDi2T7Z+4Fg5nk0i9Y3ZlsB61OTTD8lAUv91igxpsHTaN0KdMqbIIcn1+jNfTNcZD99VRMzTDg== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Z/+UCrCUSnkIibjdi435ToKk2cxIa8p/zEAzaMYj7uaAU9O8wHNlM+tQfnxilfTXUPaLMHZfT4HP2xQnr51rRGs/T52l/iVwetwnnbIKagMy66q6V292/qAOOZSAlr+cXS9zn2kCMe35V7EYeQC8XbCFljaSkQaqykIjz7X19tzWmuTqChCrdEOjV6saFUGmaF5+QoZhm/attuQxGnj/V89tXKwTr0QvuLC0lr1qGBb+XXJNSnhRwvdwCtwK1kkqWYN1C4otEEKrxtTAbQtYr2xyG+XI3ein4NA9JkZ/NRZ+0uKmQQ2Wc6D/IRgxirbQD4nCh+j/GQgGIxsZFmn/ti6ToK0xe2Ol/fAeyCzBfYfRBHn1TYG04tJnL3VSgKgsT6D2oq1jLY4kuQET04m3yZaT32WpO59t4dJJJJc6OImkjveie0kwHebozqLcSLHP2kcN0TgBt30vGrvCx5Gh/zLvuoRPQjXPVwR6RS6luVrnSD1friuDrO2PaXjn2USAB3KNBLUyhPf0x6IMFr9jD8/a3bV+GLpmz00/oF2uzWkMveZ86XAfj3irw1sOUlOwxasRW208H9pp8h5dUr6NBURnNImttrhPbqBmwh43+fRbcpHJ1rR+0iYyV6CqxWtDQ+7P0Tt9mGsaYsb5P5t4S4FmY549pil4x+y6b2Xral4E0u3FyiOgkQGEQlmQDLm25qwPdO6bLTjzHviRHcgEVGDCY1GiukaSv1cX7TbWfoXNCKpZGRSm/IxztrJJdRBDMIKhygCp9gfqv1vCean8G9oqfHn9hIzXAcGVyXbLwrYnASv6N8GiK0MOi/Z0yfnWtwq/KMF3HjTOjnmriTdLz0o81DdhAGItbmEYsLvRCZMIBuZYxk5d4ZmENKI6nTpKAwSuLOeNVC93a7uDBt9tAzybvQ5PFLtFH28YEnaXt/mem03rD+/G/te+i+sHsyBaV61Wchq6vlwjYOhBLhaJXc0OCqGAB8P2d0a00Bq/5jnJJn41ITbkwur6CQuX4czzMuWzwBLjfJTAfqInWgtM6XXu4zl0iRCILZk1aCTRkjA7Je3lvNNtHFh6HVSXef6XhiNhfFUQjbWEQFnr9wK+iAaGr5FtMv050nrhmlvsKxhYZ8G0mlLm8F3FzyDiH7BhpiIQXr3ilRwwcaZ/EFlpENwrUwC1ftv8oUEOgBFWrcKxw+/ohu2zfLJQTlY+5JE4DqRWGBtmv3yoyPHfi1RjMUOMRp6VBj+IvUtKlpcNZHaeD7U2LXOv8Z/mWDrf4Ie9chnvRbqhI3TuSuXDNLdSAoKez4quaMqdfAX82KGGeWU= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fbf9b38a-eddd-47ab-fdab-08da63f1421c X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jul 2022 10:28:27.6935 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR01MB4814 Subject: [FFmpeg-devel] [PATCH 7/7] avcodec/iff: Use unsigned to avoid compiler warning 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: kTsreFRCYHwb GCC 12 apparently believes that negative palette sizes are possible (they are not, as this has already been checked during init) and therefore emits a -Wstringop-overflow= for the memcpy. Using unsigned avoids this. (To be honest, there might be a compiler bug involved.) Signed-off-by: Andreas Rheinhardt --- libavcodec/iff.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/libavcodec/iff.c b/libavcodec/iff.c index ad96bd9191..0bc2e3ca21 100644 --- a/libavcodec/iff.c +++ b/libavcodec/iff.c @@ -152,9 +152,10 @@ static av_always_inline uint32_t gray2rgb(const uint32_t x) { static int cmap_read_palette(AVCodecContext *avctx, uint32_t *pal) { IffContext *s = avctx->priv_data; - int count, i; + unsigned count, i; const uint8_t *const palette = avctx->extradata + AV_RB16(avctx->extradata); - int palette_size = avctx->extradata_size - AV_RB16(avctx->extradata); + /* extract_header() already checked that the RHS is >= 0. */ + unsigned palette_size = avctx->extradata_size - AV_RB16(avctx->extradata); if (avctx->bits_per_coded_sample > 8) { av_log(avctx, AV_LOG_ERROR, "bits_per_coded_sample > 8 not supported\n");