From patchwork Thu Aug 12 05:50:01 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maryam Ebrahimzadeh X-Patchwork-Id: 29484 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:8e8b:0:0:0:0:0 with SMTP id q133csp442155iod; Wed, 11 Aug 2021 22:50:34 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzdBp/Tm08xLA8xwWFUBkTzaq6chlNeE0kD/UnrNBMK8fMxmBFqbqBUu6L3Pu6Ean1q4wGG X-Received: by 2002:a17:906:119b:: with SMTP id n27mr2125292eja.388.1628747433736; Wed, 11 Aug 2021 22:50:33 -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 n4si1820281edb.423.2021.08.11.22.50.26; Wed, 11 Aug 2021 22:50:33 -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=B9Jwihx3; 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 5A5BB68A2DE; Thu, 12 Aug 2021 08:50:22 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05olkn2039.outbound.protection.outlook.com [40.92.91.39]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A0FED68011C for ; Thu, 12 Aug 2021 08:50:15 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mWy0YDGoO2urUWe1JUVatwQyeqPimFx8iB3Gl0YiGq92sHY4+tsJKW+zm9qxk6EAyEXXE4ekhtEVKWjL0Xoa6ghHm4WhR0PCtSWsSlJ7/GwMhBIJK/xPj5cneN1pXHdik21Ev3Ee7BXo5MSSzynVG/OypXBW4J2PtYBS9Czr8DfS68n5wNBuDaiHEt+d+fsdF+cnqs/flnh/yf+XsWX+6mGdd6sSMcVvAM4px80f+YScft4R/TmynjOeWrz9l5PV2b6MtUTOFzfrBwE6kHBfSp5awTfLpcpZkdXvZ9k1ohswolo66wuPxQEeVDl/ON+Ptd9DLLKwJMBYoOyWwSB25g== 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-SenderADCheck; bh=cJkpz/RnpJ6cciC3RxtXuZnRN9mudVHVEQIdTlVFs90=; b=XXRX+mbE8oiNhpi3qkvjQwvxpH6vkjZznXWW/GDB9Pwqybwh2xITSIoLli/mbA9H/R/3uhuRSyymO6/uXigKIdLJ6mJYePJQGaH72gQ1pec3zsGtVFpoqWh60LkdB9wm9jA13rmnfg2om3VuVW91kN4lQJLo4pbo0Q9hyis8WHTrophpED1Bl5iOdOqOPaMG1p+MnL4QV/7ujeay+VON0Cp/gC4qWDnVUKgkWZGsle4ZCexBfppLxNuDSAmIlofHqVpKcvFhSffOGL9QBs//POPwLZnBYKLp4eMFjxIb3E9+EEcH5UgOFKxhyCIMF67SHF2KNDyFqOFAXbdchvRPMA== 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=cJkpz/RnpJ6cciC3RxtXuZnRN9mudVHVEQIdTlVFs90=; b=B9Jwihx3Q3bVq78OcXJztnB1A5DlgOB62zsjkEyNtgcs9HlMveW7DTLAOuabvDj8GNrVdxYsse9KuT5WPadcfcR7IQXp5dyeCwc+7olnlOjVZYEtf2LCJBGcyyiLxUjsnPUK9TrFb6L0tUnwJkFR3CPN1cbOiD4VbNcHWCrYIuu5KmG7Xgb/QzFpOpev+Wbr9haurlb6yNiPyrDWTqlTRSgHIRHWUcApaRGo9ITkyipzm2+9pjdAEydQud272T+MKmD5UNJYo/zH2sN7VQVPyiZ5Zwf09D6BOBAC71qfc605ytwsLQdJK3qmE3B91MmUgUV8zzq/OFhnjJ5jqYd3RA== Received: from DB8EUR05FT051.eop-eur05.prod.protection.outlook.com (2a01:111:e400:fc0f::44) by DB8EUR05HT228.eop-eur05.prod.protection.outlook.com (2a01:111:e400:fc0f::87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4415.16; Thu, 12 Aug 2021 05:50:14 +0000 Received: from PAXP193MB1262.EURP193.PROD.OUTLOOK.COM (2a01:111:e400:fc0f::46) by DB8EUR05FT051.mail.protection.outlook.com (2a01:111:e400:fc0f::397) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4415.16 via Frontend Transport; Thu, 12 Aug 2021 05:50:14 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:6C7186C23758AE9BCDD90BB58C62FF196BAB0D7931E58D29EA6CFED4440919CA; UpperCasedChecksum:CBD5B95232E008ADD2B517A0F9025F9BC6CDDA4FA50351C2C8614DCAFDCE42C4; SizeAsReceived:7178; Count:43 Received: from PAXP193MB1262.EURP193.PROD.OUTLOOK.COM ([fe80::b1f9:e0a6:6946:9c81]) by PAXP193MB1262.EURP193.PROD.OUTLOOK.COM ([fe80::b1f9:e0a6:6946:9c81%2]) with mapi id 15.20.4415.016; Thu, 12 Aug 2021 05:50:13 +0000 From: maryam ebrahimzadeh To: ffmpeg-devel@ffmpeg.org Date: Thu, 12 Aug 2021 01:50:01 -0400 Message-ID: X-Mailer: git-send-email 2.17.1 X-TMN: [VbQPZwhyY0u6lgXexSlgnPx2m5GGPzpb] X-ClientProxiedBy: PR0P264CA0102.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100:19::18) To PAXP193MB1262.EURP193.PROD.OUTLOOK.COM (2603:10a6:102:dc::5) X-Microsoft-Original-Message-ID: <20210812055001.5563-1-me22bee@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (2.191.150.59) by PR0P264CA0102.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100:19::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4415.15 via Frontend Transport; Thu, 12 Aug 2021 05:50:13 +0000 X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 43 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: 25c0b947-f5b1-465a-ead4-08d95d550dda X-MS-TrafficTypeDiagnostic: DB8EUR05HT228: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: vZEm4rHU9V7Kf38otNQph5OwSvFtORQT5Vml+Z/HOA9qf8cyiHUr85jD1r6ut2bUKaKwW504vtUhQ1N8JPZdIar3a4KDlwa6JTrxrlj3C7cFjAfAYEaT3BKw6XSlgCcODHHW+cIlUipuYlEffYFTyvFv0+SS5PUcQpYWAezKPmiV//L0yq40+NOxxW3rKVVnj8PdjF0e350KAnZRXZMKFvHNqAyXZ82fP5SywSVx04R11+nD58UMcXBCBLVP0OhFoS7hb+tbygZeSEOBqOuN1mi+BDD71O4iD0POR436gKuM3VM9LUlBcn/mgp9BVZdbBsq1ZVLPhS/7PS3YXgtWLJ62ne3Dsbbeyq0YN1AO+fJRdNKxpJGOPTzazIO62yP1Z0QuEJ5Vi7dun8crolGG/afczO8WRZhtSS3aB622JzkoIGSJuc0g9/dl4voAIg1L X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 3wjLbtCsXbav2pWAQGPSOimNLCYEqT3RJ9L0nGKPSWqUSko3aRFauFM5zvszIrUCRNXoLEbosq17Q05SJDBgDmk5BdSgerZimg6ZN+AJAlLVVy0Gs7IT5Ld484R7Nqd/2subGL30phnd0tBGpdUf6Q== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 25c0b947-f5b1-465a-ead4-08d95d550dda X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Aug 2021 05:50:13.8736 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-AuthSource: DB8EUR05FT051.eop-eur05.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8EUR05HT228 Subject: [FFmpeg-devel] [PATCH v2 1/1] return value check for init_get_bits in wmadec.c 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 94XR6tEgpfIP sorry for my mistake. previous version faild to make. --- libavcodec/sipr.c | 5 +++-- libavcodec/truemotion2.c | 12 +++++++++--- libavcodec/utvideodec.c | 8 ++++++-- libavcodec/vaapi_mpeg2.c | 5 ++++- libavcodec/vble.c | 5 +++-- libavcodec/vc1dec.c | 8 ++++++-- libavcodec/vorbisdec.c | 8 ++++++-- libavcodec/vp6.c | 4 +++- libavcodec/wmadec.c | 1 - 9 files changed, 40 insertions(+), 16 deletions(-) diff --git a/libavcodec/sipr.c b/libavcodec/sipr.c index a792b22c9f..362b475bea 100644 --- a/libavcodec/sipr.c +++ b/libavcodec/sipr.c @@ -547,8 +547,9 @@ static int sipr_decode_frame(AVCodecContext *avctx, void *data, return ret; samples = (float *)frame->data[0]; - init_get_bits(&gb, buf, mode_par->bits_per_frame); - + ret = init_get_bits8(&gb, buf, (mode_par->bits_per_frame)/8); + if (ret < 0) + return ret; for (i = 0; i < mode_par->frames_per_packet; i++) { decode_parameters(&parm, &gb, mode_par); diff --git a/libavcodec/truemotion2.c b/libavcodec/truemotion2.c index f29db593f9..f6fedc22d4 100644 --- a/libavcodec/truemotion2.c +++ b/libavcodec/truemotion2.c @@ -317,7 +317,9 @@ static int tm2_read_stream(TM2Context *ctx, const uint8_t *buf, int stream_id, i pos = bytestream2_tell(&gb); if (skip <= pos) return AVERROR_INVALIDDATA; - init_get_bits(&ctx->gb, buf + pos, (skip - pos) * 8); + ret = init_get_bits8(&ctx->gb, buf + pos, (skip - pos)); + if (ret < 0) + return ret; if ((ret = tm2_read_deltas(ctx, stream_id)) < 0) return ret; bytestream2_skip(&gb, ((get_bits_count(&ctx->gb) + 31) >> 5) << 2); @@ -334,7 +336,9 @@ static int tm2_read_stream(TM2Context *ctx, const uint8_t *buf, int stream_id, i pos = bytestream2_tell(&gb); if (skip <= pos) return AVERROR_INVALIDDATA; - init_get_bits(&ctx->gb, buf + pos, (skip - pos) * 8); + ret = init_get_bits8(&ctx->gb, buf + pos, (skip - pos)); + if (ret < 0) + return ret; if ((ret = tm2_build_huff_table(ctx, &codes)) < 0) return ret; bytestream2_skip(&gb, ((get_bits_count(&ctx->gb) + 31) >> 5) << 2); @@ -359,7 +363,9 @@ static int tm2_read_stream(TM2Context *ctx, const uint8_t *buf, int stream_id, i ret = AVERROR_INVALIDDATA; goto end; } - init_get_bits(&ctx->gb, buf + pos, (skip - pos) * 8); + init_get_bits8(&ctx->gb, buf + pos, (skip - pos)); + if (ret < 0) + return ret; for (i = 0; i < toks; i++) { if (get_bits_left(&ctx->gb) <= 0) { av_log(ctx->avctx, AV_LOG_ERROR, "Incorrect number of tokens: %i\n", toks); diff --git a/libavcodec/utvideodec.c b/libavcodec/utvideodec.c index b39d8a7948..144992ff0d 100644 --- a/libavcodec/utvideodec.c +++ b/libavcodec/utvideodec.c @@ -153,7 +153,9 @@ static int decode_plane10(UtvideoContext *c, int plane_no, c->bdsp.bswap_buf((uint32_t *) c->slice_bits, (uint32_t *)(src + slice_data_start + c->slices * 4), (slice_data_end - slice_data_start + 3) >> 2); - init_get_bits(&gb, c->slice_bits, slice_size * 8); + ret = init_get_bits8(&gb, c->slice_bits, slice_size); + if (ret < 0) + return ret; prev = 0x200; for (j = sstart; j < send; j++) { @@ -314,7 +316,9 @@ static int decode_plane(UtvideoContext *c, int plane_no, c->bdsp.bswap_buf((uint32_t *) c->slice_bits, (uint32_t *)(src + slice_data_start + c->slices * 4), (slice_data_end - slice_data_start + 3) >> 2); - init_get_bits(&gb, c->slice_bits, slice_size * 8); + ret = init_get_bits8(&gb, c->slice_bits, slice_size); + if (ret < 0) + return ret; prev = 0x80; for (j = sstart; j < send; j++) { diff --git a/libavcodec/vaapi_mpeg2.c b/libavcodec/vaapi_mpeg2.c index 26e0cd827c..8e3903212a 100644 --- a/libavcodec/vaapi_mpeg2.c +++ b/libavcodec/vaapi_mpeg2.c @@ -136,9 +136,12 @@ static int vaapi_mpeg2_decode_slice(AVCodecContext *avctx, const uint8_t *buffer GetBitContext gb; uint32_t quantiser_scale_code, intra_slice_flag, macroblock_offset; int err; + int ret; /* Determine macroblock_offset */ - init_get_bits(&gb, buffer, 8 * size); + ret = init_get_bits8(&gb, buffer, size); + if (ret < 0 ) + return ret; if (get_bits_long(&gb, 32) >> 8 != 1) /* start code */ return AVERROR_INVALIDDATA; quantiser_scale_code = get_bits(&gb, 5); diff --git a/libavcodec/vble.c b/libavcodec/vble.c index f1400959e0..d3e1804c7b 100644 --- a/libavcodec/vble.c +++ b/libavcodec/vble.c @@ -146,8 +146,9 @@ static int vble_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, if (version != 1) av_log(avctx, AV_LOG_WARNING, "Unsupported VBLE Version: %d\n", version); - init_get_bits(&gb, src + 4, (avpkt->size - 4) * 8); - + ret = init_get_bits8(&gb, src + 4, (avpkt->size - 4) ); + if (ret < 0) + return ret; /* Unpack */ if (vble_unpack(ctx, &gb) < 0) { av_log(avctx, AV_LOG_ERROR, "Invalid Code\n"); diff --git a/libavcodec/vc1dec.c b/libavcodec/vc1dec.c index 1fb1950ade..07d60294f2 100644 --- a/libavcodec/vc1dec.c +++ b/libavcodec/vc1dec.c @@ -444,7 +444,9 @@ static av_cold int vc1_decode_init(AVCodecContext *avctx) // the last byte of the extradata is a version number, 1 for the // samples we can decode - init_get_bits(&gb, avctx->extradata, avctx->extradata_size*8); + ret = init_get_bits8(&gb, avctx->extradata, avctx->extradata_size); + if (ret < 0) + return ret; if ((ret = ff_vc1_decode_sequence_header(avctx, v, &gb)) < 0) return ret; @@ -771,7 +773,9 @@ static int vc1_decode_frame(AVCodecContext *avctx, void *data, } init_get_bits(&s->gb, buf2, buf_size2*8); } else - init_get_bits(&s->gb, buf, buf_size*8); + ret = init_get_bits8(&s->gb, buf, buf_size); + if (ret < 0) + return ret; if (v->res_sprite) { v->new_sprite = !get_bits1(&s->gb); diff --git a/libavcodec/vorbisdec.c b/libavcodec/vorbisdec.c index dac2b6841c..80358f6359 100644 --- a/libavcodec/vorbisdec.c +++ b/libavcodec/vorbisdec.c @@ -1052,7 +1052,9 @@ static av_cold int vorbis_decode_init(AVCodecContext *avctx) return ret; } - init_get_bits(gb, header_start[0], header_len[0]*8); + ret = init_get_bits8(gb, header_start[0], header_len[0]); + if (ret < 0) + return ret; hdr_type = get_bits(gb, 8); if (hdr_type != 1) { av_log(avctx, AV_LOG_ERROR, "First header is not the id header.\n"); @@ -1064,7 +1066,9 @@ static av_cold int vorbis_decode_init(AVCodecContext *avctx) return ret; } - init_get_bits(gb, header_start[2], header_len[2]*8); + ret = init_get_bits8(gb, header_start[2], header_len[2]); + if (ret < 0) + return ret; hdr_type = get_bits(gb, 8); if (hdr_type != 5) { av_log(avctx, AV_LOG_ERROR, "Third header is not the setup header.\n"); diff --git a/libavcodec/vp6.c b/libavcodec/vp6.c index 73822a00f9..149daa59f3 100644 --- a/libavcodec/vp6.c +++ b/libavcodec/vp6.c @@ -167,7 +167,9 @@ static int vp6_parse_header(VP56Context *s, const uint8_t *buf, int buf_size) } if (s->use_huffman) { s->parse_coeff = vp6_parse_coeff_huffman; - init_get_bits(&s->gb, buf, buf_size<<3); + ret = init_get_bits8(&s->gb, buf, (buf_size<<3)/8); + if (ret < 0) + return ret; } else { ret = ff_vp56_init_range_decoder(&s->cc, buf, buf_size); if (ret < 0) diff --git a/libavcodec/wmadec.c b/libavcodec/wmadec.c index 6ac6221d11..0bbc685c89 100644 --- a/libavcodec/wmadec.c +++ b/libavcodec/wmadec.c @@ -822,7 +822,6 @@ static int wma_decode_superframe(AVCodecContext *avctx, void *data, uint8_t *q; float **samples; int samples_offset; - int ret; ff_tlog(avctx, "***decode_superframe:\n");