From patchwork Sun Dec 5 16:07:09 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 31984 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:cd86:0:0:0:0:0 with SMTP id d128csp3422899iog; Sun, 5 Dec 2021 08:07:34 -0800 (PST) X-Google-Smtp-Source: ABdhPJztqGvdcVHClCe9DFV6q0Da4eASNjgMBPTVdI1Ad4V38VXIgSk/7vV2PeDoKPPTdpdNG5h/ X-Received: by 2002:a05:6402:50c7:: with SMTP id h7mr46786297edb.277.1638720453961; Sun, 05 Dec 2021 08:07:33 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id j8si13920925edq.407.2021.12.05.08.07.31; Sun, 05 Dec 2021 08:07:33 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=TmaDD3E8; 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 7B6C668AE5C; Sun, 5 Dec 2021 18:07:28 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-DB5-obe.outbound.protection.outlook.com (unknown [40.92.64.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D32B068A929 for ; Sun, 5 Dec 2021 18:07:21 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CgNeCy/jpWiW5D+fOMfjDB6++DD1mlUOdtiwkmegjIimfriwxWDSFcfm3yS0aEL8cZJUst9IO4qLvsKZNXngFT01xO71lOwm1uGeHRq4d5fq9014BTul0ZAXbxKz0mjLROdYhzF5cVvwHZdE9NP6P0zSKqdpTo6ujtWYT9rhA4BCXGcEwHHblJFyB6NnRbAFPQPMhxNT5Xc/K2EWs6xWqzljp1o2hOrFU9KfMiRaLwp/9f76j09gEZN/2DAcj/Tq98fkm1cYgVc5JAc+Axid7fGrpCFhdyg0k8ejs4H8JKeeUGQRRBViOVfr/uLhE0Y2nUawNmJPiw8APDE7SdUMcg== 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=NdI9BehYYA19pN9YN90of42xSLF1X1EY7c/htZTOlo0=; b=T4AwptclSOYf1JfweSdfiFxlgrnxRja7pyQwb8FjOM0PmTRUJ+OwBoxG194SAjgZ2zi8mvo8cS617tzohhotpwqJJBZfbHWci2IYMQ7KXueKAOIVHyXPRNYAg0i3mKODHGwcZxN1adR/HV3XHIQqrrAyLid6ZLX5fzGjSN4truBWb6ZZrBAKerdz55kgVkNF6gXJGUJ+eCH/ikBtNwI5YlUQnhmNtoWKG84VwMRyR/XcIuu8xCsvdnmn8IPztiNxLQNMCuE7fBRxih4iEXGor4CYS1FK+5gVxCs/PPmmpLi4mboFFbT2n/c5jIMRazA2JcE5tED5v5Q56ntP5yIBTQ== 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=NdI9BehYYA19pN9YN90of42xSLF1X1EY7c/htZTOlo0=; b=TmaDD3E82BlFVdyNWblTNFWlGNwSY5F68X9gbVl/HnjEOKOtbYHNm2oOi5bmHMvQIO+a6C0QirAf66eV0vcgjkQNrBr/9Srj3my54BmnH6ZIAF+RgmOLMw2iiItVxbXGHlf6zSFmxeoh4AzqARBjeuVmDXg4X3vcwc/W9CI2ggB2LJNkYAQmZaY8DQxaFilwPpAzQEEZmRCQaPcbInLd83rTgfQAywe95DSfOfyPnKOUHXrfsPumOhKrQJWmnYruqgHw5uuHXuNwdyg5R0EV9NgcB7IrqvzCNZOSiyeRRPD4d5V2UE6j4ZVEXdEzg/hLM5gMp+si7jfKZSg+nhVkuA== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AS8PR03MB6919.eurprd03.prod.outlook.com (2603:10a6:20b:29c::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4755.11; Sun, 5 Dec 2021 16:07:20 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::f0dc:92f5:6bc2:45ca]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::f0dc:92f5:6bc2:45ca%4]) with mapi id 15.20.4755.021; Sun, 5 Dec 2021 16:07:20 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 5 Dec 2021 17:07:09 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 X-TMN: [UYAAawqS2jK5T9NVbvIEuoCeVd/MGupT] X-ClientProxiedBy: AM0PR03CA0027.eurprd03.prod.outlook.com (2603:10a6:208:14::40) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20211205160710.57743-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.248.74) by AM0PR03CA0027.eurprd03.prod.outlook.com (2603:10a6:208:14::40) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4755.11 via Frontend Transport; Sun, 5 Dec 2021 16:07:19 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 57fa66ef-7aea-4f54-9c92-08d9b80950b5 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiT2s5ZWgpZq8Ejmd9Sq8/vc3wOycuqQlyQzd6Z1EHcHnMhT3mWLCHyBI3U16c63iIiALQwOrwiXXJArpaESWn+KdNvbuzGJSCMIMq2KciLWs8qIBAwE3d2UuKPGUQR6PYREkzSainp2Y+62BhaqiDyhHBn4S05H2spRxiHv2smcGn0wPKIddjsIgoom6/6BbXlQZTJ2BkyqNr5WdlGmgRjy7p//GXhSLdmsGF32e0hoNLKn9u/mRcGp2fihUPRQH23Mdy8rNHU6inXse301z9jiAgZQwXseoNfvO6giE4IRmpC5z50B3EJtp1/XTwoZZ0Ql+fO2kuMsqcco3lnGFzpitXOdSEEprRc4KGss9LWhHjduKlZH0Zx5zi/5zTKF3V49o9Z6JMQ/TEsf4Vtrx6oWaloiqhhZZrUxcEs+/FKadTyNiaPjcOicsRC9ngsGUKJK2pZvnzWS6TZu2Jxj7lPo48VLlA7AWvOD6kyrtvN8r4dPbPGYZcwGS1Y9frTAcRIh9jOVCNQEDLPpuJy9+5xH1kIPpJyjfUkXBfs0AMxE8MZs6F/OzC5Qq1AiKq9OI/Ufh3X8Ogk9q2O05NW8OIy1yI6y/Jv/S8lP9EgMBRgT6K+nqXUKJbwMfmVmKCsqDz7VozJ2LS3bHWzpDHVWbuAjgKPQXcE/3+q9h/YnsScN3GhyAhZ6+7lobz3HtryNfUmP7YOATW6MMa0YFtqeef4VZuCS2af/j9qYuEExTvn6SLVYSThkbHctHMyL+UIzZWM= X-MS-TrafficTypeDiagnostic: AS8PR03MB6919: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 0NcLHuoLXMEQDTZfBK5g2nPEVl3wCDtOm0l99lXsHlbfkD2zx3wuYHOIcf8S7dGgY6GNdPnv5hxN2GiJaFOn27+II/DRsQNHokit/WiXwK3TsCSmByYnM2RjisjRt+37KZTAP+KGXAV+OLKMZJa8sYxUu2hKhGY2xBJsH6RG1oP5vXcsxF8U+jlp0bMzAwRG9MJNUTsLKdY2Icd9YO4k+VgMJBRtXmttOFezZ5eG/zRqOc+OfCkdbK7XTxYcivpWGN/nF6gdd0gasi+Owh/rA4wKi9Jz94jCOq2vj3upLv5PcNwOlnLP9LfEX4ZzcJS/BJ/mFQmba+WCjC5cwEGDFqAhnjc9yLOuewWyrIHjS232haIwxTV/EpEoQFWWCuzhGjHNaeyIeO+cXYXlh7ycCKzs/gFmmt8RDsH3AwXb2yi9zVNylsko5WLus3pDaSMpJ0L4xsVRdX7PnQXdHhF/DwvMcHelug4QZxHvichg3PmRs1HGtNmZtC3KCE1hRxCFcyXU9hKa0SlWn6buYi9WiY3Jovk5fASY8L0jqPycD5+PMfiK4coNUETzNPZ0R/BFnRrg5ARWYg+6KsVkw0b18g== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 21KTBm4F076NMZ62bu/MwUtPlDywod/nRFUrqdExyWkZFyte95lWKGI/rmDD/3OqrveZHZgFk5kircXIebGyI/0JFLS5KCp2806XZ/91wT4MnjF8D6MrxY/ZEtxHf+XQNQd8YPVCr8DU39qI1fdFOBjzQAD4GgrUCu8CB2ifBiLWxQS6ZCoSX25SdXyFEnoVilzC98w3fhEqYMvrx5IqQRKHEqSRVDv3hhusNYb3ZMpC9VILmXi7YZE1VA/yvRZA2AoEcI1YGVoeTJSs3sUGNqyECgzJbnlIcjnn0rC25EvxJic9uEmY5jC0cuuzjMpTtDy0kV42Wd7eLVNCISfLFhgKcbFR70dCTt7yJI6GnFQAM/h5UDBgLJtJPShB/5bw1Ce67uBzzgXf5SRDLUFYCSV/0LBNiDagsrqjbr3trNC1HONGFy9pmOD3i9XY3tKtQUeag4mOq2Qv4znOBS5kJ40YDIrU7l4sRBmdb8jM1QXFuwobIXnFEYz9hjusa64POiSyzUmAPT6J05XRU6ZkFqgwX09QvXaliZu+KCzwIJRJ0dxydQ96NmHzmaFxW1VV7CMVVYDeW+D8NQltGh9We9ezmoIbHqO8Gg31/TwFdZg6eYsrtVydlRV+03xrpZebVvzKL3NKH1h0LSSlDIT4ydfbKC3ZLyM/o9ntAtar+j9M1NKYBRPnnh2bAgkfvJBLzqlC3iq1Wepkgf6Y5Xj5Gt7a0UHC1K4eqqzzlXjAshnPurOqKkc47E3m3b/DHX6HIHGm1cKZbQu7ESgszqOb7Q7qI0PNFwaNElHHNOiAGOJvDoa+NTczAyZ0RFv9dTsBZMMJx5nzSRGMCoFYDLqcVQlX4GNRqOZk8AZgLWqzR5pHG0QMyHqGvnxTRzkxrFTsMkzDGjwCEGPhg4dh4hULTNoRIxS0xIpPA/5m+KLE1nRjdGM1saVp08EySa5oBABe2iRz8shIMbtyqCdjSEzbEQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 57fa66ef-7aea-4f54-9c92-08d9b80950b5 X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Dec 2021 16:07:20.0598 (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: AS8PR03MB6919 Subject: [FFmpeg-devel] [PATCH 1/2] fftools/ffmpeg_opt: Improve checks for truncation/alloc error 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: tSEJCeDQ0qt5 Do this by switching from the dynamic buffer API to the AVBPrint API; the former has no defined way to check for errors. This also avoids allocating an AVIOContext. Signed-off-by: Andreas Rheinhardt --- fftools/ffmpeg_opt.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c index 6c2eb53290..78b5574a3d 100644 --- a/fftools/ffmpeg_opt.c +++ b/fftools/ffmpeg_opt.c @@ -34,6 +34,7 @@ #include "libavutil/avassert.h" #include "libavutil/avstring.h" #include "libavutil/avutil.h" +#include "libavutil/bprint.h" #include "libavutil/channel_layout.h" #include "libavutil/intreadwrite.h" #include "libavutil/fifo.h" @@ -1649,29 +1650,26 @@ static void parse_matrix_coeffs(uint16_t *dest, const char *str) } /* read file contents into a string */ -static uint8_t *read_file(const char *filename) +static char *read_file(const char *filename) { AVIOContext *pb = NULL; - AVIOContext *dyn_buf = NULL; int ret = avio_open(&pb, filename, AVIO_FLAG_READ); - uint8_t buf[1024], *str; + AVBPrint bprint; + char *str; if (ret < 0) { av_log(NULL, AV_LOG_ERROR, "Error opening file %s.\n", filename); return NULL; } - ret = avio_open_dyn_buf(&dyn_buf); + av_bprint_init(&bprint, 0, AV_BPRINT_SIZE_UNLIMITED); + ret = avio_read_to_bprint(pb, &bprint, SIZE_MAX); + avio_closep(&pb); if (ret < 0) { - avio_closep(&pb); + av_bprint_finalize(&bprint, NULL); return NULL; } - while ((ret = avio_read(pb, buf, sizeof(buf))) > 0) - avio_write(dyn_buf, buf, ret); - avio_w8(dyn_buf, 0); - avio_closep(&pb); - - ret = avio_close_dyn_buf(dyn_buf, &str); + ret = av_bprint_finalize(&bprint, &str); if (ret < 0) return NULL; return str; @@ -3279,7 +3277,7 @@ static int opt_filter_complex(void *optctx, const char *opt, const char *arg) static int opt_filter_complex_script(void *optctx, const char *opt, const char *arg) { - uint8_t *graph_desc = read_file(arg); + char *graph_desc = read_file(arg); if (!graph_desc) return AVERROR(EINVAL); From patchwork Sun Dec 5 16:08:12 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 31983 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:cd86:0:0:0:0:0 with SMTP id d128csp3423929iog; Sun, 5 Dec 2021 08:08:32 -0800 (PST) X-Google-Smtp-Source: ABdhPJx/nnl7Kh/Q7HHjnuGucULDO47Eds6nEgrP5vGigIfO1w21vS4KlMMSh9r1194lEEkbwZPR X-Received: by 2002:a17:907:1c8a:: with SMTP id nb10mr40204006ejc.5.1638720511846; Sun, 05 Dec 2021 08:08:31 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id s5si18174118edd.18.2021.12.05.08.08.31; Sun, 05 Dec 2021 08:08:31 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=S0ACngLU; 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 872DB68AE5A; Sun, 5 Dec 2021 18:08:29 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-AM6-obe.outbound.protection.outlook.com (unknown [40.92.91.108]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E9EE36802C3 for ; Sun, 5 Dec 2021 18:08:22 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ku1f9w0UsEkraD40ZA3kn9ly8mMPfbRdxDEa86Exbgpb1Mv8BXoIk1K2TAe0mODEJBSVgA/vIF4B1KxLUb3EPm9k7cCshog2iS2lspQM4PgFQ+Mfqbhly3LkCyBHZ23MPRljU61GVqkMt+FsgaIIcmxboGI8Fh5JQm37/+yCC8dbATiOe0Mgs+CtAA4dVHTAjyzCmHEIa2QkzykJLcNi0oygYMOjCfQTVL9p5vjJJqk13YlaVDgY1hPFodlzZ7pXaMTMOSuZ1sp5Tag2msspSZD7kxgH8usJfA2UQrVfgjaMNRnxjuEuRvRzR3EsmLXAWhHsIqnWh8eiDGinew3bLQ== 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=3sBx9ouK7u98kJ1rPohH15v8x7iPRw7oJjFwNL+8Uf8=; b=hFfe6Q7DtwZ/KxaifjV+Js57x3CLjqWg6Bo8JYIJqgGaNPttDMRShlKJPbzinPjiGa+uEWSt2lM7vxhg1hyKFS+VaORzw6xnO/A1jcEf5lqZDoZCz7SbcwbjwVJYRHGqd7dnXGWk1BkPpGvgsq6QaM1r2glnon2u/KlHHAXApbOkXxKgr8ImOhL3XJ2rTK+Q0LUrhpSSgQgUw9nlmWAKLIGs7KHAmhWFAIEaLIJW+IcYyFp6ZDFCvCBHQyxgiCsqqzTeeaebBhSpCg99losjF3MZzJYjo2GwVi0W3C0c/c6kZ4CBc7juTsZk3EnftlfoQxK5qjBotbv3dMOdmH4i2A== 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=3sBx9ouK7u98kJ1rPohH15v8x7iPRw7oJjFwNL+8Uf8=; b=S0ACngLUshNx7g+N4Vt5Za+N688pvqC9c8VYMa3SfW0lVjL47M1b9TBSC9ffmIh7ySDVCDKSq7Sgbc96eH2ahJePqrvYwIzErcI++NQoqeij3RRoZ08WTVGi749ur/sKe0E5T2IvP+lASRYr9fHUxCb13RfxqYoVuc0t3jxAGgU/DjEWfCLeMXkWdeD5SXkwTHz6WI42/Yq2Imc7Vr2D7PZIM+XBy+8jt9Kow6oY2dXdFK/WtGOHpy0E2qsfdTwyhGtTiFwITTf3GQ0+fJ5Qh5YRTSZp+AvgZxIXupVdR+6Rdrem2djUu0aDSElh9eVAuK7HEeNpRdzVuTqqcY3+ig== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AS8PR03MB6919.eurprd03.prod.outlook.com (2603:10a6:20b:29c::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4755.11; Sun, 5 Dec 2021 16:08:22 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::f0dc:92f5:6bc2:45ca]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::f0dc:92f5:6bc2:45ca%4]) with mapi id 15.20.4755.021; Sun, 5 Dec 2021 16:08:21 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 5 Dec 2021 17:08:12 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [ZjnzQR+T9UaYHf7aud8l146VXlsIPh9F] X-ClientProxiedBy: AM0PR02CA0203.eurprd02.prod.outlook.com (2603:10a6:20b:28f::10) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20211205160812.57889-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.248.74) by AM0PR02CA0203.eurprd02.prod.outlook.com (2603:10a6:20b:28f::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4734.24 via Frontend Transport; Sun, 5 Dec 2021 16:08:21 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: fcc5a0c4-6521-474e-c893-08d9b80975a5 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiT2s5ZWgpZq8Ejmd9Sq8/vchHCl7+c5cbJYP5Zoao4ttbPi0OqIXNoyv0bAckbEZo4VXdrUGcaz+EfxWmZb+OAWFsyGmckLBEVMQuuS8vsUYo0grYYsvcd+wtTvQjzQS6RvzhHHTQfu5GIOklYD4G6lvtAHJj5trL89B7SGufwmviQM+APkVjCq9e7UEbJB+tfOJ17xEnNlPX20UXK+TMKLiNxQUnxJZ2Qr5iusk5PdCSi5fGkcoTqM9IVy91mCUHhHS1M6/KsnZif6hoNJsrtE3Z9DlVQTQXs9k/KTLrPVpChCcLaxeicqzMd6Y4btaFSWELgBiYV9tEnaSJaEQkrnkppbLAHpjScDlSvorRmanUZAy640JFU3oCPECPMgM5DAD9GuK5C4IMHqgn04rd+c4Qbtzz34xyDPH6KIAFOO9ChnTar/4sQnM1SrG4p95axDl2/kj8deAn3lNk0gB3pcP8xsSknAm/fxNykFJQSWwhuC2SbWpeWYfnD4vtKZz5SQONL4oiKqyo0O8hEtfwKyL4K3NQHXjAdM+zbnOl14bHgMnYLBvAosD05sroSyMf1s3xr8uuVWTvgs49CL9VJbtHUg3ivjRctmozDd6Sl9fhoERoRGtOkQsFFXzRhuD8F72k7fXsHR3hAgfndv26fW1Wak9Kz/u91vid5yVhGQVzo7xV+dLdenwHx60URbwF3/dy1CkX1r5F57yMFy3JFn2wto0dRRoXKvFN5vx4oE2x1t1LByUgr1DPdJsPh9oHA= X-MS-TrafficTypeDiagnostic: AS8PR03MB6919: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8TuuW/zbeIWJvxSeGR4lbD8upPwGUOPkrVfNqJ/2Q8kcg5TJ/Svkqjt/NppQi9TSLa+TDOOBWayPmmlpiAoxOa4AwrdepjifkutLBKP5KOARtO58bIzEH1IXbWxCuds1vbpChZ+WyPIaf1bS3BAigbHd7OHykelCD4mX9EvxbJJOO+an7BsyQs6gwCs9j/QZn30KqY7yOena9f+UPottJFX6y4V9++MAHIBkdS1zB0AmRTa+fxnA+Mrl0IXpitbTHE3NzPd6NC2VHAiu8VgL43gDJ00XkIfsiQlD7obg7d+aAeMvAdT2OqJiCY6PpWrtejF3oNPJ83jrqCYjEf/st8cPDiVUbdFLRVTzlY+9C8K2kEe134rce0wm0FCzwzNipzFbKKt41ly8m4nXZv/6rEToZZHHSKpnoAl/ROiu1uXWQQlCwwXDC+fxg8nubO6aYPmkNlFHf0YF6xTH7qsjFCWlrpJVgBCzVamaYrHhNAB/BSeXYTkFjFwDNZOJfLsm+6WMbhavk5hnWrjOc8jkhr0TAAy3EF44PP6ZoHxaWxgyVvPYTDdolTuLS1vs5af16tnin1oTDYEUiqWZNRY2iw== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: VpymCO3GW0woLbEdy4W+D6MKWqZc0kDyAlzifSdWFstQhCUO5cGoFyCUcbbmfqE1cvhMzGKw7Fr48aDwelANg9dyKOU5kpZu26YX++l+UI/wSAr94zoAFJD8occQBWrq58bhYcmtrQ88Dfc8/553enYHr7mtloaGM4pV2Jtd4xujKXtHw4Q+uawHP9IRp6GJa+vVM0XV/zdSDct2TN/PbA6lCf9FyPluGkg4Nsv+7nTOSkxMzp9KTiU9aJL93ymkAKMxf9n1mpk7Ms3DVT3iN30gdaORWk7ROvlOCjM0gV7jCWNPuiaQyNLfmydBQji5hDxjti1q9hr0/QO9r/LXcO1LOb+WWt4Mk6qzwslYU1hyoy/eZghPtFYnmH7K5+tIeSpDdBSGG9pA+0e+kOdm9ityXA/K0ZTea96jmOr+v1J4kjViLBFh25rSgBHu4OJ40v73eWdUwMXDAKO5QE4GH5doi/0IisBBMJYM24b0SfFgMbXPM0hAtOeuvW33jfdfv2Jv0BhVJZ22xGkSnoHKw3oCc1g1e0BsSXMLearvKWEbFDnvz+z/PRnzq97bXF7S8kwFQqbpAmtuoUj0CTebPSmQ8S0+sSuKjx/CjYXT9mLQ9MBhDnCG66f0tBTaiq1hJ+gUb4ewr6TYgDEetDi5h2OcfvMRI1LlmDdZ7lEE7pbyUDSrZT0eXcfhuNCGNozNl7jpsWzvgN/GbJVfVA55tZpbmOgtoUntXwVSGvFVzusoCAUEGRjXFsNq+J47X3DmmaYqWTst6QNY2tBVh61gF4MIzzVelld8nCPc99Wyd95JEOOWDps3sjmvh3qfdpBjmDuWTnGTDQqkEmTVaNUmrzhFiw8r/F2MZ60UMsx6EdFY0u0z3/NR9tbkDRiSUli75PVBL5PvJxFlVh4xXf24P27oXTvD9ZlGRY5khDi99VetgvJDXk9Z+Q+Hoy33B2Y0mR/Kbz8hrU8Bh/aL6NPCLw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fcc5a0c4-6521-474e-c893-08d9b80975a5 X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Dec 2021 16:08:21.9480 (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: AS8PR03MB6919 Subject: [FFmpeg-devel] [PATCH 2/2] fftools/ffmpeg_opt: Improve alloc/truncation checks when reading lines 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: vYwV7LbZrcOs Do this by switching from the dynamic buffer API to the AVBPrint API; the former has no defined way to check for errors. This also avoids allocating an AVIOContext. Signed-off-by: Andreas Rheinhardt --- fftools/ffmpeg_opt.c | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c index 78b5574a3d..66e5afdf80 100644 --- a/fftools/ffmpeg_opt.c +++ b/fftools/ffmpeg_opt.c @@ -1356,23 +1356,18 @@ static int open_input_file(OptionsContext *o, const char *filename) return 0; } -static uint8_t *get_line(AVIOContext *s) +static char *get_line(AVIOContext *s, AVBPrint *bprint) { - AVIOContext *line; - uint8_t *buf; char c; - if (avio_open_dyn_buf(&line) < 0) { + while ((c = avio_r8(s)) && c != '\n') + av_bprint_chars(bprint, c, 1); + + if (!av_bprint_is_complete(bprint)) { av_log(NULL, AV_LOG_FATAL, "Could not alloc buffer for reading preset.\n"); exit_program(1); } - - while ((c = avio_r8(s)) && c != '\n') - avio_w8(line, c); - avio_w8(line, 0); - avio_close_dyn_buf(line, &buf); - - return buf; + return bprint->str; } static int get_preset_file_2(const char *preset_name, const char *codec_name, AVIOContext **s) @@ -1503,20 +1498,21 @@ static OutputStream *new_output_stream(OptionsContext *o, AVFormatContext *oc, e ost->autoscale = 1; MATCH_PER_STREAM_OPT(autoscale, i, ost->autoscale, oc, st); if (preset && (!(ret = get_preset_file_2(preset, ost->enc->name, &s)))) { + AVBPrint bprint; + av_bprint_init(&bprint, 0, AV_BPRINT_SIZE_UNLIMITED); do { - buf = get_line(s); - if (!buf[0] || buf[0] == '#') { - av_free(buf); + av_bprint_clear(&bprint); + buf = get_line(s, &bprint); + if (!buf[0] || buf[0] == '#') continue; - } if (!(arg = strchr(buf, '='))) { av_log(NULL, AV_LOG_FATAL, "Invalid line found in the preset file.\n"); exit_program(1); } *arg++ = 0; av_dict_set(&ost->encoder_opts, buf, arg, AV_DICT_DONT_OVERWRITE); - av_free(buf); } while (!s->eof_reached); + av_bprint_finalize(&bprint, NULL); avio_closep(&s); } if (ret) {