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) {