From patchwork Thu Apr 14 15:57:40 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35317 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:671c:b0:7c:62c8:b2d1 with SMTP id q28csp837955pzh; Thu, 14 Apr 2022 08:58:30 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyf2rnvAtoUX3uXLIHCyDdQIv1UVyxkjvptN/5ji/NL14kMwPO9d8eAKTFNh8Dm6yl1qhXf X-Received: by 2002:a17:906:1be1:b0:6ce:b0a8:17d with SMTP id t1-20020a1709061be100b006ceb0a8017dmr2924481ejg.413.1649951910244; Thu, 14 Apr 2022 08:58:30 -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 i6-20020a50d746000000b0041d6147352bsi3887895edj.528.2022.04.14.08.58.28; Thu, 14 Apr 2022 08:58:30 -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=OCfLohFw; 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 3081668B39C; Thu, 14 Apr 2022 18:58:05 +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-oln040092073037.outbound.protection.outlook.com [40.92.73.37]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id F11D768B48D for ; Thu, 14 Apr 2022 18:57:57 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fLBykabv1iOMbmYubQAbwbt7q5VQC9Jvzlf6/Q03W+3qgyjkLa/RKoOAgLzMn9EvavxZQLxpMU3PZscmYpUX2/WO+ldwFflw7TChtFcPST1VekTpRIrCFd0hMcWPWSBKA+PQCTMo+Oomv84/nVagTXdFLAn+ie2Hr01AWUp+ytKTLKulmrIayj93P0xv+cLj/Jqx5tMd/NYWRpwGuNU7cyIaVr75GlPAfqZGusWnxjviIqwl/AEV7ew6rzkE/Fzdyq0vkRnqjDYHedpx6KQev8OQZQKgglfKBw08ucblgyoVqGPjYC22YITE9IjfrFiUVUY0gOua++1pHPVDZYf+Ow== 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=FVfcvdfsS++K4284afvDRFa6PVpp/PJJZR2OqIW7MbA=; b=laZ3BkCN4XvhZSFWD/UCM+ujFL/4+3H0Q4+sg37U7w3DXw9i9xAK/kmwmh0AZakDrEocYiI3fCYbE/NrnDEBcJ19T/zKhTmo74ni6CJKYfUbwUv1FwbqInycfuP+8G6R3EJ6mVTWFpovgK1028E/I46AEzO9+Uva/VgUBK5H/BMswLFrBGlT8ck1phq/+5TeTOCcs8jkArWh+1Ibh57ZfLxpbm5KPX0mowoVQEkmhBOSavxopF2BgBWkKsy92RHZn9Z/z8eacaRVbs5yQxyiTX/n0rT+9sEait4rnFbiB4SOGa6Kveh2SnFU9aZmjyOdIVjxstz6HBCkIg7kpywe6A== 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=FVfcvdfsS++K4284afvDRFa6PVpp/PJJZR2OqIW7MbA=; b=OCfLohFwaKNpDKCfPPxe1QAtDgWn36NOoc/yTi7juLwIpbCmvJ6+WNkrtbzlE+BAbcBvVy+fSrkyd1a4TvcGfujsDatI2QAniNTAbjJ5gACqJsk20k9gvOCKAq3qLL4DV8mV1juf2apZbvP6u3PG9xRCnVwFtLOejLLpZfnr3DkPMrgnka40kOcmX00wEMdP5tYCzpncR6HJuOxDpkbEuIxhcTtr9Dwytw22Dop3N/o5KT+ULvVmYqyWJSuhJ33c676fhT6LI83cPJgkHX9wSOgtJ1MIeP7sUQhigmyK+ObjYiQRl7W3CUdC598jDemWdHQN1CtTCkyJlLzAodzGlQ== Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) by DB9PR01MB9029.eurprd01.prod.exchangelabs.com (2603:10a6:10:36b::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5144.29; Thu, 14 Apr 2022 15:57:52 +0000 Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com ([fe80::fcc3:1285:374c:9b2]) by AS8PR01MB7944.eurprd01.prod.exchangelabs.com ([fe80::fcc3:1285:374c:9b2%5]) with mapi id 15.20.5164.020; Thu, 14 Apr 2022 15:57:52 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 14 Apr 2022 17:57:40 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [pzfzB8lPZ91VaNgE46k3bcFlu80dXGQA] X-ClientProxiedBy: AS9P194CA0027.EURP194.PROD.OUTLOOK.COM (2603:10a6:20b:46d::22) To AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) X-Microsoft-Original-Message-ID: <20220414155740.1362987-4-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ef137275-c982-4855-6cc8-08da1e2f87eb X-MS-Exchange-SLBlob-MailProps: +LiGfBxqLEtFHMHJFUXgGNnM1jBfvC59pDvNMttO31UQj9ASJmBY9LFVzBe/LEqXic9mABYMLV6fiLeam+AVGFugj0hTw4/AGiwG7QUmnXqKKq6NTyPsvPIoJvbHT5Esu868L1jGq4d3xCMYrKZNgxjY6bfHkLwl+q5d2np5hct6Enbd0Bt2Wb7xri/4kbypj+FMFT4asmkItTY9irI8uIV0RvvE5WQlyC7I528rciJSt+75seTjkQ2+m5O1C9AJRqBSyo4KybRMzHPv+ENcnMswhKuirdDOKvBRh+gBSuq566n1S+UrY1VPfh0wtCtnFw/jK4cTtHZFUGVfzbaZK10fNBaGdXYXXFrlgFtmRX/QfxpWyQfqusRU48p2WauDGqYcYgPID92bgTmdLuBpRZ/od8jv57SzebouUtPFgzhXrb8Xq2wErUh5FyFel1qRyrRYIynY7wTH4Gl3M1QhsLRVUun71RNxaNdynysemXdlpLbU/aBS92TSevS+i5B/eaDUsnBf7x4JE97L2hl7rUyJytYIPhOALcO54+snAG0sUSY2QslSP+pCbHGpmzWb/Fi/qtpB1gRZuu0L/C0Swp28TMiGutxryggkdrpCQ7yCpUgoOIoDUgvM+eYDiEu3JHrT7h0cuefVnyeXBcYzNrUGAySfQf3qrhtVzM9vWCFxr3q9FhQfzCPFcVhpw8kZL7XyoFULqBs8C294dnVnbu+rxOoG6b8DCJc/JpkCw9jqrSYNFbk0s3ONvpPeLP5xdtRGf6oGcga0w8R+neU/4LnHzll3It0U X-MS-TrafficTypeDiagnostic: DB9PR01MB9029:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: WeE4yYmXqexv+BSfLkL591mnc46t6NdumofutSvwdpu0kTe9gOkY7D0PfSTOwPYb5XGHUQS6EmT//9aW10w2AMVWZRcbMkuD8wihxDt0t12oGDGuvhNMh1WfTH/pS4HeqI0T502OqIQRUIncL6gFgIm8wMApSmDJ2VbRl9wCGnT251TZAFmB+iek9Nv7YtUJvkYQBb4l57HrOGivHDal9TabSpHOkzl4TfIz1xuQP7mzdiWcwKJSF7/FxL99vRAM21XkEhjqJzmc5vdyMfDrP4nw9zyLMmBSIzQKLyxeA48+TiaboNcw8i7VlteQLnVJpfpLnoFLpVtisOBYmPVbzulr1S1PYYceGdCEOSd1Zm1A4D4DXilkAPiM1Mjk2G5W91UqcCpyKuD9BHUQQcewhV6KW3a/rtfndtqCmKUvQVrc+WkpDzhbQ9K9TG66HBSzuJiisLlK3z+8N9TV10bx1L+zQtqTyhHHZj7mByJfKn9qoY52unPRhDNmCpwAtRLM1gl86vnxSYLmI25ZtRoOQDuaXtR0tISJC122asQrpsDjJSZmlC+P0Pe+qaxdTH5hNeyZJI5mins8zbtOgS9lVg== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: xlcxxtmZ3uLU2LjfZG5QM7jDHNw4Ee2dNMlWxxXCfqU8hmfBzup5ZaioZRlpmbeDCH6PeoDiUZk4Qy43JxvkmqDm82/V7gn1D7brPZBbykjyXdVac+UpgfX37BdrYKQA3/avt0BsL2c1iqR1zySRKfRHHi0hxhNo2EuZPC4RRo2OSLisHHE92Pa64NOGdj73+Nyhfuw/0mPEvoCd95y/EN/0WmPZK4kozFlvsTEqhqQ6yZKGbheb3+gKLDnaGRGhXrIiPwUuDWar8wq/l4R8ENAoff2UDSdzCCM4VANDI2d/fiVoldQPuFi5RDuGh+L2SHmE2RR4FFs3TF2qmgrVevx+Pz+bt8gC3yLhXuSTuxGybdDaDCybFcM9ruuTKsGAXtpWJcK/oFJ7eByJxC2USBO15GcLamxGq6bh+r8lnbTTpBNt6rw0Uxz9eowL3x2bksFVK+rGWix7fHk/03ec8hx1iDTlmanFpd3zPzvGPU6m8NEUt1hoGUEQ6/6IPltMxhXWm0vl0usfQULTOcQBDqG16buOsXtSRYRktBwvSHhpSAh/paNTrSrONbhCR+//0yBMRETFxJq/COeUhgYsJI1yWxmjBxyw3muFngkqlFqn0DxEqKpsBIkWKei9Bx7Sf1PlDBAPnSGmvN+BxnTbE6JMyG0AtQrrUqCT2dZhUdP2Bt9Ytb3/G3llEVIRkUA4cf68oIvCZ1diq7uBtafoIeEoaUd4kgngK0TlaPvzkVwD24dfK0SPU/qmeTeh0it23vZnb8X0puRwHszuAk7cUy4ORxL6gPUngR8JE8jw2V3LV7Ip5ql6q6pe1TnjqoSUhq/iKU9o2MJZgR0X3ZzOPtbDqvWGY5vU+izSEegBNEJpznwNTaoG+ngE6OLOhP7Q2PIzfdDkpdQWH3/EweS6OyDVaJgdFQ4GXIAbZZvmEZC7rd6/coxEx2MY5rBmyk9SrBXw+BPxBlh5lXioZ2rtU1FFQvgKPVCjNePB5NAD+yHwcSKVX1r4OehbZqXnxu90JkDGgvBnaZuxHcHONq52H1ouTJeHJlERZF77M8M6/Z3esWAa56KXfvNX8B+ypVHbD5JtvpEfi/Wb4unCDXJ2x3vu4LuGDG3UhR884KH6lqdQUS6b+2t28S/a4FJg7jMu//pKLRILB/py2g0W8FAVqMuJN7Z1dkiRB2F2K4imXs+54llGnIbgKZbk2kyrgWWd0+rb1B8sDyawp3Dw/zopSTCJFTdbBlFFnjuw7BWI/c3E9GnbxCAx0Wvr2xzDWxxO4HzzhbgySYms2Bd6zOk0I8JxbipUNmgXdL2r5dY511C/8d128vgfLxZnqa0XpBx67V6bPujPUKQjGLnirBlXeNsHUTN2TsW0cqFfgUi8zDt9JTIJcdz7GJsfkASV2FSEbd/lunpqgPOpvuwAFeWchB6ioePokctQvSqNBgforLJ63YsIoI8fZ2spMrdeuPNS X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ef137275-c982-4855-6cc8-08da1e2f87eb X-MS-Exchange-CrossTenant-AuthSource: AS8PR01MB7944.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Apr 2022 15:57:52.1026 (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: DB9PR01MB9029 Subject: [FFmpeg-devel] [PATCH 5/5] avcodec/mjpegbdec: Don't use GetBit-API for byte-aligned reads 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: cfyMM0jTXODI Signed-off-by: Andreas Rheinhardt --- libavcodec/mjpegbdec.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/libavcodec/mjpegbdec.c b/libavcodec/mjpegbdec.c index 46b9eb377e..50fff2562b 100644 --- a/libavcodec/mjpegbdec.c +++ b/libavcodec/mjpegbdec.c @@ -27,12 +27,15 @@ #include #include "avcodec.h" +#include "bytestream.h" #include "codec_internal.h" #include "mjpeg.h" #include "mjpegdec.h" -static uint32_t read_offs(AVCodecContext *avctx, GetBitContext *gb, uint32_t size, const char *err_msg){ - uint32_t offs= get_bits_long(gb, 32); +static uint32_t read_offs(AVCodecContext *avctx, GetByteContext *gb, + uint32_t size, const char *err_msg) +{ + uint32_t offs = bytestream2_get_be32u(gb); if(offs >= size){ av_log(avctx, AV_LOG_WARNING, err_msg, offs, size); return 0; @@ -47,7 +50,7 @@ static int mjpegb_decode_frame(AVCodecContext *avctx, AVFrame *rframe, int buf_size = avpkt->size; MJpegDecodeContext *s = avctx->priv_data; const uint8_t *buf_end, *buf_ptr; - GetBitContext hgb; /* for the header */ + GetByteContext hgb; /* for the header */ uint32_t dqt_offs, dht_offs, sof_offs, sos_offs, second_field_offs; uint32_t field_size, sod_offs; int ret; @@ -64,21 +67,22 @@ read_header: s->restart_count = 0; s->mjpb_skiptosod = 0; - if (buf_end - buf_ptr >= 1 << 28) + if (buf_end - buf_ptr >= 1 << 28 || + buf_end - buf_ptr < 40 /* header size */) return AVERROR_INVALIDDATA; - init_get_bits(&hgb, buf_ptr, /*buf_size*/(buf_end - buf_ptr)*8); + bytestream2_init(&hgb, buf_ptr, buf_end - buf_ptr); - skip_bits(&hgb, 32); /* reserved zeros */ + bytestream2_skipu(&hgb, 4); /* reserved zeros */ - if (get_bits_long(&hgb, 32) != MKBETAG('m','j','p','g')) { + if (bytestream2_get_be32u(&hgb) != MKBETAG('m','j','p','g')) { av_log(avctx, AV_LOG_WARNING, "not mjpeg-b (bad fourcc)\n"); return AVERROR_INVALIDDATA; } - field_size = get_bits_long(&hgb, 32); /* field size */ + field_size = bytestream2_get_be32u(&hgb); /* field size */ av_log(avctx, AV_LOG_DEBUG, "field size: 0x%"PRIx32"\n", field_size); - skip_bits(&hgb, 32); /* padded field size */ + bytestream2_skipu(&hgb, 4); /* padded field size */ second_field_offs = read_offs(avctx, &hgb, buf_end - buf_ptr, "second_field_offs is %d and size is %d\n"); av_log(avctx, AV_LOG_DEBUG, "second field offs: 0x%"PRIx32"\n", second_field_offs);