From patchwork Mon Sep 13 23:23:37 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 30228 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2a4a:0:0:0:0 with SMTP id k10csp4467229iov; Mon, 13 Sep 2021 16:25:37 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxCBUvNEZZq/YzTNTnpLGAqF5xakXSl3y0ESnyKwohE9H5wWDgJNitNJqrytNb8K07kBWCi X-Received: by 2002:a17:906:50d:: with SMTP id j13mr9078963eja.58.1631575537261; Mon, 13 Sep 2021 16:25:37 -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 v21si10306983ejg.618.2021.09.13.16.25.36; Mon, 13 Sep 2021 16:25:37 -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=i+f23iEn; 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 56AF768AF12; Tue, 14 Sep 2021 02:24:40 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-oln040092071100.outbound.protection.outlook.com [40.92.71.100]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 781C268AF04 for ; Tue, 14 Sep 2021 02:24:38 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jD/Q8bn/OInHQnRwxW1mq8n7hELQYkXLbU+pxlV8u8FdNSobw5Awte3uglBKqOW2on2fXCWsjsEx2ptUBwjJU0I0QC41IITGGjz/whSuXZGL22GGoDTkE5b095zsVJp7lZoxBvrL6rBcuYXaXd5Lrn6L1s9rHj3G7Lf/mBAjhwqmNlEen7AypfSx2f3mN2xWsc0fPmUT+47giCwrwFoGQF/Van3cFWnnWv/h1iW5UU32D4eSkRa/+oWufJpYWXQBbR+j+jzT3RrVfPL7KhIB2f7Ynwad3OuVx+bTy9jSt9oSJuSr0jE/mg718W9huKOtCDUTYPLj5CV4UJtQHkR6IA== 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; bh=e5Xtvc2RaJ/Lv6sAsO17SRijiLsHhYa6XMgtQgD1Cn4=; b=ROWZpHPqlTTo4T3rC3elSR6lMeYsserYhVtGkh9IUUAjM1rbtrOAbvhrXDvazJtj9SY1BFe0KoZJlmtDjZ1hXM/5M1Jam4C8348u584qnNOXbdxu+eZ+Pm/RPrVIJHjNvipZc9eSEeLqDpDBeIp2kW4KZfczZt9GLrnGUxiCa8jUkhaLvM5LaJg7ZuYFlB6Lzt2FtSyu9pNzrh0lnRZTwIO9rjiqComXr2YCuZfQSwF6K3wadem4qiMgYUfcgpdBI0poKwanbhvtJLDfvQNiOL1GAKlYdgnLHMDOlpo7E9NMbnQWKXLTn7AcZ3MvL/RAXm3ga9HSkh06oXitLgDyJg== 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=e5Xtvc2RaJ/Lv6sAsO17SRijiLsHhYa6XMgtQgD1Cn4=; b=i+f23iEncxkMRnwmlW2G6zWz5ydHCyecbUemErsLJ0NRNkvBxlIdXoDAeBGkFWwxk9+cJELsxW+AKJWtOoFfURIhqyQyNA9DcomGzfNtY09KpBZDcngJf5dCQIdhS+MpQ58nhzlXA0KVYpmljiyidhQcwfYKBrEwXO+MbZrQ2FzQThZnysnb7s/6lXrKwzdAUToAk/10ekEN21z+oYYvvgBCdJHhl1EMawK/udGITym9Hv1ZqC0QX3SG+xjSA5iI9h31ibVqNxxMEamT9VJrmLOXCkxsWcLc9D5OUQQIPgZy7C006y/+Okh/nL1JTWQw/Z51/fgZvVcIpTKJWn1VQg== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM6PR03MB4216.eurprd03.prod.outlook.com (2603:10a6:20b:d::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4500.18; Mon, 13 Sep 2021 23:24:36 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00%4]) with mapi id 15.20.4500.019; Mon, 13 Sep 2021 23:24:36 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 14 Sep 2021 01:23:37 +0200 Message-ID: X-Mailer: git-send-email 2.30.2 In-Reply-To: References: X-TMN: [f5zaZU22/Xx/PYNuePu31cVwuSMgs1xE] X-ClientProxiedBy: AM4P190CA0008.EURP190.PROD.OUTLOOK.COM (2603:10a6:200:56::18) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20210913232339.3115725-11-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.142.38) by AM4P190CA0008.EURP190.PROD.OUTLOOK.COM (2603:10a6:200:56::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4500.14 via Frontend Transport; Mon, 13 Sep 2021 23:24:36 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7c599e61-c3a8-4711-0b89-08d9770da6c2 X-MS-Exchange-SLBlob-MailProps: q+fD6XS3/UJ0H+K4Wek5UQBrLJju5Y35sI7iP0HE2DAtPVj5HBai6VDFrJ8OTXFxl1KDI+DpvjN5NKO9p/9OkRFVqvXDNAdSubPMEy7XhCBudS1ho7hwiae0087f1S2bHZZgRGzLORQ3dqx3CmMDFmdVDKVeJ/MbonEx1T1Ytgc2cm5/GgPnuzV50LfBdDWilNsRFsQ1vAG95tm/CtGvYNbPeTJXNhmDFG/7xUMaoHmVxDTRSnm5LSVtxOtBql+mI/vgFRY0v5W6gcuwUx78gwDtChZOB5gCzqfRED+nCx6Li7D5Ta6gehgI4rXdWgqX4/iVeuwrBkcm8T2uO1buWMvd85YSX61AexJJOfI4vGa5YaHTdWWooAlcE5uPFMJetvRPsTlpwYMZQj3QMWEM2VvS4ZTXN5rG0nkkaDkEGe962Shc3SDEmva96Xbvrr+WJhXY1aQCIpxo9AherLgSGoV92bxYAsDecmZ09k7LHLC4RDrOa4RfaLt64CH7hBtx4pYUoqad27AjwrcQNpbS8/2zwjrNImUgnmQAg4YkobL0cTuW98FWYRJK7Tf4MScLffBATCx6pPu3kydv9IJQA4fcMY1ri2lsvWsRHl1zWi3oarYXIeRpW50KtOrLdVJuot8AkO2bwfto36q6F7aAzQmVZl1DCaqyD/hpav20Ijy/FOl6ccOun004+OLKK59CaxgRG5US3d3790cnH/gXbA== X-MS-TrafficTypeDiagnostic: AM6PR03MB4216: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: AA8NDXK4Ujxsa4RiJc1eVns6QEqGs5R7Q0cEIC0gFRLhD70nyhpTliWtdGYwHXnCT6afO3hmrr/jWKNlLd4sFCKHwZbj2XYs9GFvMI7mDSD9CGZRQ3eiOHaGOor71dwFzB5JCBKlnDjNI6Jk1WEvj0sun83npPtOgfUmloArlU3om3mmF/MG7SwWcdTgEE9PF4fwyWwLZdL7uSXr9U+4dBYee3cOe0AfRsARLirQP+25yzGhlzFrrRbQeLYes4VHhHo8LCxZHmDR8yjhXufO83jhGw7CBErAYRKO26Fw+1KlhKksvEPMNxliiX08REK6UccH177nFaWVadIbgablVlX8wqRSLzQ/r3X6Azf8dn9vQ/gYQGjpYS4OO+vYxFbBzCAHcq21t/st6MHtCG0Tw17BJuZib2KIYx5g4B/GPDEFrs0/DBt824lcqqhT/Q0G X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 8no1ITHee3CXL5sciFi7ISDc2L2lbzkNaEXaR2nsvqQ7DfentVSUrYE5x6dTqxLIhyv6vzppDc0UQOl0EkMU4CEHZc0MQYrHpPy2qg7qVt1Cc6hfd36kt+1917WAkvVropwhLyOm7KCFekuGAODNNA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7c599e61-c3a8-4711-0b89-08d9770da6c2 X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Sep 2021 23:24:36.7522 (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: AM6PR03MB4216 Subject: [FFmpeg-devel] [PATCH v2 12/14] avfilter/avfilter: Honour the short options documentation 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: 8EBPDFt4qD0M The documentation for filter arguments states that short options must precede long options (i.e. those of the form key=value). Yet if process_options() encounters arguments not abiding by this, it simply treats short options after a long option as if it were parsing short options for the first time. In particular, it overwrites options already set earlier, possibly via other short options. This is not how it is intended (as a comment in the code indicates). This commit modifies the code to reject further shorthand options after a long option has been encountered. After all, avfilter_init_str() errors out upon unrecognized options, so it is intended to be picky. Signed-off-by: Andreas Rheinhardt --- libavfilter/avfilter.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c index cc499fd5ed..165ab1f44a 100644 --- a/libavfilter/avfilter.c +++ b/libavfilter/avfilter.c @@ -814,6 +814,7 @@ static int process_options(AVFilterContext *ctx, AVDictionary **options, const AVOption *o = NULL; int ret; char *av_uninit(parsed_key), *av_uninit(value); + const AVClass *priv = ctx->filter->priv_class; const char *key; int offset= -1; @@ -824,8 +825,7 @@ static int process_options(AVFilterContext *ctx, AVDictionary **options, const char *shorthand = NULL; int flags = AV_DICT_DONT_STRDUP_VAL; - o = av_opt_next(ctx->priv, o); - if (o) { + if (priv && (o = av_opt_next(ctx->priv, o))) { if (o->type == AV_OPT_TYPE_CONST || o->offset == offset) continue; offset = o->offset; @@ -848,7 +848,7 @@ static int process_options(AVFilterContext *ctx, AVDictionary **options, if (parsed_key) { key = parsed_key; flags |= AV_DICT_DONT_STRDUP_KEY; - while ((o = av_opt_next(ctx->priv, o))); /* discard all remaining shorthand */ + priv = NULL; /* reject all remaining shorthand */ } else { key = shorthand; }