From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 2D11D484B7 for ; Fri, 5 Jan 2024 00:39:06 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id AC3EC68CC16; Fri, 5 Jan 2024 02:39:03 +0200 (EET) Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.10]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C07FD68C41E for ; Fri, 5 Jan 2024 02:38:56 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1704415142; x=1735951142; h=from:to:subject:date:message-id:references:in-reply-to: content-transfer-encoding:mime-version; bh=KhXAOCvwod66olzPaWW/OlpCN3E/FfpKT2i2Oyrebr0=; b=WBmJ5z8BHpOi3tPkXAqqn+6r0K/NaEemJZRrEcyfWhWCGPlx2y7qXGwl xfZaLVzTLABhHpvUUpUClMTfTGtvqhNdtThIcO9UphRlV1yopjarIZn4G WfnBk1iI8JJw1ebcr/OH+qrqsPBwNyYR+uA68eFd0RxEVO3aBQFPI3c1O y+vzqyWxciQmXRGFY9EgGPHJV0G9tcCoSmgImFbDv01cEnYvhzMuWXR18 ECa8cMOl0l1si4hhswJqPSRK2DqO7kEaJ5amCTosrFX0rHXgmEeTz+Gmh jYXwmWgMmbvw0K12+IV/UllaIGQrEfze6RawnN5jKDawA9OmliJkbVyLL Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10943"; a="4762234" X-IronPort-AV: E=Sophos;i="6.04,332,1695711600"; d="scan'208";a="4762234" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmvoesa104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Jan 2024 16:38:55 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10943"; a="773698245" X-IronPort-AV: E=Sophos;i="6.04,332,1695711600"; d="scan'208";a="773698245" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga007.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 04 Jan 2024 16:38:54 -0800 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Thu, 4 Jan 2024 16:38:53 -0800 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Thu, 4 Jan 2024 16:38:53 -0800 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.169) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Thu, 4 Jan 2024 16:38:52 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cqW2I73rJxCm68ZsToQgFDO6tCHoC/htQ6MlwtD+0VSDS0Ft6G7ZJiJY8TjpH6y3uNNAVjBoP6WooepjztwGt2JBqw6AB9eg03fsxYJHauuSk2u8q9u7mywnxOWWb6qTxzIBQEx13yhjYncmzPhfKBS/wHBMZbuwfX4hlc+skkYs9944+o64KvFOcgUL2dIbADEwmvHKQWEQ9l9rPLV1wOSYKNTpG/+Llc8p8MDRoTesxNXH/mMgTQCzcB1HBVbk7yCl0yJl2dmRuXAUWnfw5+mI6TaTgYRQX9kq7l8HPDZNvC0b2v11QnV0jv4+7ZTBKje+QGLRlR1Pj+bsAGxJoA== 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=Nvqbbuje/W6ZT6jsdmDJHQ2H4L8eRfJQz0S1kOrBWyI=; b=aRwCuCiIr67nKridkuQP1b9TrDlft/SGsTnsm9XVvZJLAAa8vNFdiuX05LpgrxfkSzF48kWm9qbGzeLUQ7dIrk0lbWKINm20UGd7X7juC/+kZe66rVykfx8CtfURi5xWPowmmp+2k9L9WwdAhwZzxNMhlFk4UvUw0YtoeahojE4PwBzOxGG5MRljs+zl3lwmxclQujoUh9bRRngUFknW25ef8rySCWCneYBDu2S42lpB3RvimpLBdJyikvuIaCSnvgA0Rss867xlFoT2PB1ZzyauX9zF1Hrjj7k5vlOktSNMz+oXbwxEF1KEFOUBVERElDd2sZ+LqXfhfdNiKL7isw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from CH3PR11MB7937.namprd11.prod.outlook.com (2603:10b6:610:12c::15) by PH7PR11MB6699.namprd11.prod.outlook.com (2603:10b6:510:1ad::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.13; Fri, 5 Jan 2024 00:38:50 +0000 Received: from CH3PR11MB7937.namprd11.prod.outlook.com ([fe80::36df:9084:c6e3:6845]) by CH3PR11MB7937.namprd11.prod.outlook.com ([fe80::36df:9084:c6e3:6845%4]) with mapi id 15.20.7159.015; Fri, 5 Jan 2024 00:38:50 +0000 From: "Dai, Jianhui J" To: FFmpeg development discussions and patches Thread-Topic: [PATCH v3] avcodec/cbs_vp8: Use little endian in fixed() and improve the pos check Thread-Index: Adoxhcxe12ag1JunQOSVul2VPdKfUQN6X6pw Date: Fri, 5 Jan 2024 00:38:50 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CH3PR11MB7937:EE_|PH7PR11MB6699:EE_ x-ms-office365-filtering-correlation-id: 2810523c-94b3-4f6c-4e85-08dc0d86af9d x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: /IZBwc7BqCaQCYeE1UIFw/1CvYw+MgwV1TbuWHPuA9+xr/GZfR2HXSFudfjarBpEsY/bqs7cFPT4In2soKYbKJ50IckcvFZf3Ch03uulp3QOZj20YFZ4uLXnqCkDtl0EZWAZZHTdLZIOWm4IcbhA1PSv0+PyrBPS/6pg5y5TXjKhsuu09aTpvvMtQF89Qp3B/LJr5B1U0kcNWugFXxJaOpIhWtuCjPJkiBBhi2ScFQoHm2iZQyEPvisks30so0mRIesCknKk36ck4JnvLkPCSKSauAhatMaYwCby0WdV0eCo6HxepmQOGjfNzT6KsbcNBoW2NGpId5En6P17r2ZIuwjpbxoamNjsc/kGaxKMDMBH/TjP+UPG7qTaQA7ChWmZNQxP9ohxIoH/lSIBRuQrJTvqnPtsF0QooyrQ1sDRkiQrjpQoh0cGAWH0/0YnRZFAwFzIgentBSBdac3G/GuNe7uW60tRPZyz+6BXproyuT0PyMWe9u9sszD6z8l0M/Q8RXTIiTeJa/lemm8EAThrTjuQudNz0yYZYvky9KoJzsoXc8/F8wrkk5k+cRryHtZq7039UNOAYVLCAyaAoLQI3sURJybVdEg1JhtQJmK/Tps= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH3PR11MB7937.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39860400002)(376002)(366004)(396003)(136003)(346002)(230922051799003)(1800799012)(451199024)(64100799003)(186009)(83380400001)(122000001)(26005)(9686003)(53546011)(2940100002)(966005)(6506007)(5660300002)(8676002)(66446008)(6916009)(2906002)(478600001)(64756008)(66476007)(7696005)(71200400001)(52536014)(38100700002)(8936002)(86362001)(66946007)(76116006)(41300700001)(66556008)(316002)(38070700009)(19627235002)(82960400001)(33656002)(55016003)(66899024); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?3FEjtnGZunetx4Qi1AMTXrQDsKTGJd6DhyuF/TLUeQeCtLXZV8rywYumfSNx?= =?us-ascii?Q?Gksv5SLcXmPvOeGHLaVa5kWi90jYdDHN+F2hC46UtaHiJGfQSptZyIH7ZxH3?= =?us-ascii?Q?YJrU/cr9rKiwYhkEVTPbz8o87b+jcdQYOwuDlLeyOtmDTMj8oArOvgw+TcBE?= =?us-ascii?Q?bz/XsfmCXz2vjwp4obxYYq09VoPlM2O9pbFBuQr9wOPb9DMbM1IIfhq4bIqD?= =?us-ascii?Q?pEltfVffFVGZmTDfoTUNuB2lZfJL63DEAMXuKGZnZ6Al6g9sG5YxcgEIYGHe?= =?us-ascii?Q?rnW02ZpJtaIQqKzM5t5ZPHWL7X59YyYIyGyNfRLpQm4nnHD+quX6iCf3z0TO?= =?us-ascii?Q?SyuEPCyzYr45sAHq6+HOvYw2fAEOZ0hTR66ucaHm6dC/GkKUQEgN10vCee6P?= =?us-ascii?Q?V9YRIsvJMpBqSyNax/P0JQGRfPQELBv/1y7trv1Z2a61kzXch0iquD3EAfni?= =?us-ascii?Q?ipLC1F0E/9XZ6hoWucUWcufb0RLe9x7E3zu3ZtgQYDDJlK2Tkdtkijb0mAgo?= =?us-ascii?Q?hstCsjQOvooyc19M8Pd+6PlhNequNkweiflaTiI28GXZZlY4kjtrViKrscRV?= =?us-ascii?Q?YtmCiFNg9tIIUkuCgg5kTEyuZYL4TyuJmk0tyZCTyy0F7rlsRGOVcJ051Mq2?= =?us-ascii?Q?tNMnKUP6rmt/N3YMsycZv5DNC+Gh7xoWD9SpPqjXDQBEdL9c8ND5JulPyEs9?= =?us-ascii?Q?TJCg7/AsbTA/A7VmkHqlxmM9yd3/70qGUUk1aVU0VCP92YpqFX7sWCMOzJO4?= =?us-ascii?Q?0nD5RmGUSXRZkSyjIT7vtwA3Lh321y2RHNc3wZDUTAxV0pLCGc16+4ML1+Mt?= =?us-ascii?Q?QISVPD73xzuoz1j5muS8yBBCmBGUboUHBh+MfcTFNgDAoeJ83DboFO4SaHEI?= =?us-ascii?Q?njTr94wP8GWXVjm8fGxxDFVnGFNg8jtdnTmgEyl3GmOexBpMSIPlUlzj+IDt?= =?us-ascii?Q?dAikFairytrXtdh6zA2wI+iMnpRoiJ4wrT5iMNigNqXsI8TWD8+7OBndtQMJ?= =?us-ascii?Q?SqGRlsvx6raEVi0J8KRrTR5c734Jx9OB0K24LxEgu3GaC/LeqZPeiZQsrVeb?= =?us-ascii?Q?+Mpe5dOyb8QU8lTsGkfSTTOPdfe9HxpKF/rJto6s8R9Nr3dLmr9zQWobQIrd?= =?us-ascii?Q?UMa+H3sksa/vsstvUkKha3mzKY7RMMcQAWabiqsO7mqeHqA51yEvXAZS19Vp?= =?us-ascii?Q?vkl/L+Oa/N+K4WAiKyW9RrX3nH7XBUdHDVsx+fTaMxEjcyQHxHRN5Dbx2205?= =?us-ascii?Q?Xyxa1jowtlErVqAtOVHAAXbagvPw1gxk9Op0gZOLsw9H7YnQUGxJyfT1Cves?= =?us-ascii?Q?d/5eaINqjF1pzxm7skv3rEX9aHqpGpazDerwzKyw2M9ycwYCDB7n2M7Zm89i?= =?us-ascii?Q?44xLpjQr/565jGkThKKTz8njRlSnuHmk+ZwwYWuDYkwsAYPg1md/IIbc1RQ3?= =?us-ascii?Q?TGxiwjKZkwhf9WmP4xshFQ0TfV0iDLWa/FkT424dpIOzm23tmqvv5lZDb+cc?= =?us-ascii?Q?w+APK+UJc1IMHiXOmINO84JzyoSL9JyxXcinCOCM2V6J/D7QJmD8RdkMcG9h?= =?us-ascii?Q?W35XXPPY6N7IWJuG31N5cEzo6JvcMBpJPU5epptn?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH3PR11MB7937.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2810523c-94b3-4f6c-4e85-08dc0d86af9d X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Jan 2024 00:38:50.2244 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: F8QS5QRezcjp5JkqwtjqD0zF/de1YCU+ygYU57xGYKf7JFNyTGotVrRQELXa2ccBa10NEgqYUbrDkUGcvMvKjg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB6699 X-OriginatorOrg: intel.com Subject: Re: [FFmpeg-devel] [PATCH v3] avcodec/cbs_vp8: Use little endian in fixed() and improve the pos check 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: > -----Original Message----- > From: ffmpeg-devel On Behalf Of Dai, > Jianhui J > Sent: Friday, January 5, 2024 8:35 AM > To: ffmpeg-devel@ffmpeg.org > Subject: [FFmpeg-devel] [PATCH v3] avcodec/cbs_vp8: Use little endian in fixed() > and improve the pos check > > This commit adds value range checks to cbs_vp8_read_unsigned_le, migrates > fixed() to use it, and enforces little-endian consistency for all read methods. > > The VP8 compressed header may not be byte-aligned due to boolean coding. > Use bitwise comparison to prevent the potential overread. > > TETS: ffmpeg -i fate-suite/vp8-test-vectors-r1/* -vcodec copy -bsf:v > trace_headers -f null - > > Signed-off-by: Jianhui Dai > --- > libavcodec/cbs_vp8.c | 53 +++++++++++++++++++++++++++++++------------- > 1 file changed, 37 insertions(+), 16 deletions(-) > > diff --git a/libavcodec/cbs_vp8.c b/libavcodec/cbs_vp8.c index > 065156c248..338d56ed7f 100644 > --- a/libavcodec/cbs_vp8.c > +++ b/libavcodec/cbs_vp8.c > @@ -33,22 +33,22 @@ extern const uint8_t > ff_vp8_token_update_probs[4][8][3][11]; > typedef struct CBSVP8BoolDecoder { > GetBitContext *gbc; > > - uint8_t value; > uint8_t range; > > - uint8_t count; // Store the number of bits in the `value` buffer. > - > + uint8_t value; > + // Store the number of bits in the `value` buffer. > + uint8_t count; > } CBSVP8BoolDecoder; > > -static int cbs_vp8_bool_decoder_init(CBSVP8BoolDecoder *decoder, > GetBitContext *gbc) > +static int cbs_vp8_bool_decoder_init(CBSVP8BoolDecoder *decoder, > + GetBitContext *gbc) > { > av_assert0(decoder); > av_assert0(gbc); > > decoder->gbc = gbc; > - decoder->value = 0; > decoder->range = 255; > - > + decoder->value = 0; > decoder->count = 0; > > return 0; > @@ -60,7 +60,7 @@ static bool > cbs_vp8_bool_decoder_fill_value(CBSVP8BoolDecoder *decoder) > > av_assert0(decoder->count <= 8); > if (decoder->count == 8) { > - return true; > + return true; > } > > if (get_bits_left(decoder->gbc) >= bits) { @@ -141,7 +141,7 @@ static int > cbs_vp8_bool_decoder_read_unsigned( > } > > if (trace_enable) { > - CBS_TRACE_READ_END(); > + CBS_TRACE_READ_END(); > } > > *write_to = value; > @@ -181,9 +181,11 @@ static int cbs_vp8_bool_decoder_read_signed( > return 0; > } > > -static int cbs_vp8_read_unsigned_le(CodedBitstreamContext *ctx, > GetBitContext *gbc, > - int width, const char *name, > - const int *subscripts, uint32_t *write_to) > +static int cbs_vp8_read_unsigned_le(CodedBitstreamContext *ctx, > + GetBitContext *gbc, int width, > + const char *name, const int *subscripts, > + uint32_t *write_to, uint32_t range_min, > + uint32_t range_max) > { > int32_t value; > > @@ -200,6 +202,14 @@ static int > cbs_vp8_read_unsigned_le(CodedBitstreamContext *ctx, GetBitContext *g > > CBS_TRACE_READ_END(); > > + if (value < range_min || value > range_max) { > + av_log(ctx->log_ctx, AV_LOG_ERROR, > + "%s out of range: " > + "%" PRIu32 ", but must be in [%" PRIu32 ",%" PRIu32 "].\n", > + name, value, range_min, range_max); > + return AVERROR_INVALIDDATA; > + } > + > *write_to = value; > return 0; > } > @@ -246,15 +256,16 @@ static int > cbs_vp8_read_unsigned_le(CodedBitstreamContext *ctx, GetBitContext *g > do { \ > uint32_t value; \ > CHECK(cbs_vp8_read_unsigned_le(ctx, rw, width, #name, \ > - SUBSCRIPTS(subs, __VA_ARGS__), &value)); \ > + SUBSCRIPTS(subs, __VA_ARGS__), &value, \ > + 0, MAX_UINT_BITS(width))); \ > current->name = value; \ > } while (0) > > #define fixed(width, name, value) \ > do { \ > uint32_t fixed_value; \ > - CHECK(ff_cbs_read_unsigned(ctx, rw, width, #name, 0, &fixed_value, \ > - value, value)); \ > + CHECK(cbs_vp8_read_unsigned_le(ctx, rw, width, #name, 0, &fixed_value, \ > + value, value)); \ > } while (0) > > #define bc_unsigned_subs(width, prob, enable_trace, name, subs, ...) \ @@ - > 277,6 +288,15 @@ static int cbs_vp8_read_unsigned_le(CodedBitstreamContext > *ctx, GetBitContext *g > > #include "cbs_vp8_syntax_template.c" > > +#undef READ > +#undef READWRITE > +#undef RWContext > +#undef CBSVP8BoolCodingRW > +#undef xf > +#undef fixed > +#undef bc_unsigned_subs > +#undef bc_signed_subs > + > static int cbs_vp8_split_fragment(CodedBitstreamContext *ctx, > CodedBitstreamFragment *frag, int header) { @@ -327,9 > +347,10 @@ static int cbs_vp8_read_unit(CodedBitstreamContext *ctx, > if (err < 0) > return err; > > + // Position may not be byte-aligned after compressed header; use bit-level > + // comparison. > pos = get_bits_count(&gbc); > - pos /= 8; > - av_assert0(pos <= unit->data_size); > + av_assert0(pos <= unit->data_size * 8); > > frame->data_ref = av_buffer_ref(unit->data_ref); > if (!frame->data_ref) > -- @andreas, refined the commit message and fixed the comment of previous patch. Please take a look. > 2.25.1 > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with > subject "unsubscribe". _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".