From patchwork Mon Jun 20 00:51:21 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36345 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1a22:b0:84:42e0:ad30 with SMTP id cj34csp1394610pzb; Sun, 19 Jun 2022 17:51:50 -0700 (PDT) X-Google-Smtp-Source: AGRyM1tIX3s/lpSZsvwSNZBBboVo7SU7g9aKnO1tkzpON8s8p01McyzuUeDDb87+v4yiSaPf0G15 X-Received: by 2002:a17:906:5959:b0:710:c2e8:79f3 with SMTP id g25-20020a170906595900b00710c2e879f3mr19472268ejr.489.1655686309856; Sun, 19 Jun 2022 17:51:49 -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 t10-20020aa7d4ca000000b0043573246900si4663325edr.497.2022.06.19.17.51.48; Sun, 19 Jun 2022 17:51:49 -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=CMx5B1qX; 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 4948B68B58F; Mon, 20 Jun 2022 03:51:45 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-oln040092075018.outbound.protection.outlook.com [40.92.75.18]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1A9DE68B2AC for ; Mon, 20 Jun 2022 03:51:39 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aa9OPJ6CuRsrQIfMqpRuPLsTRV1A4832EtZ0bL296qdOgzp6EvHwc2LmKFDd8WzjVrISUrTz1Ko/fWpVBrS3bXSCsNv1BHRVndTRTLexlZwt8Rk8YbG+lO0t2Cbxw5b/XhB0Kpnjt9878cJS4Fm62bvNCgrZbYP9z1889jSl51RG+JsyVyflgGPll/8XdaykeVcPhvff1bNDxYLM4HUtKrWq21gqaQjn63yBj1vVBekQEbY+DCiGr3vltiLmjBbSXP3F7NmmNCkiPL7pz1syzJLVq0aBdQKlUPSs5lPnoW0EX1vPLIqfLiM5dl86Nh3R9k/MgDMvY4LrQFw7T1A4bw== 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=5sVUZ/mxpFdN5xUYpgKlx30n+1vU5Dg/mjyKugPHiUA=; b=dkEU8rmhLohB50VoeQPEMbjl0XS1Un/OQ3JzntphQvA95olRL671o0WUIpRbCfw2S3tgcDUjDSd9jruvfvwmwhY/SPIEkPMnyQ7K2FIUgkDVvuwKeF2Ep3tRe5RNTGslNK9RFuFwwUTw3fImzBbsH+ymGzx4VJ6TW4KBCrXft1OIo9ybJpM5N/LRH0bvNH8tzpNxueGQaDu1IC8IcTL8Q7C+QRM2ExShjFZRdTWk46E88X/KB1243ZLYQDck3lV6hu1EiQNvsJwL+ghXJUv5QAxPZZrWsYGsLM3n3kF3NUhF6oSVLfjBQHHCak0ydmtqbyBU7Ix+rFTbwYQ2OFOJxg== 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=5sVUZ/mxpFdN5xUYpgKlx30n+1vU5Dg/mjyKugPHiUA=; b=CMx5B1qXz351rp6cHZD0km2FMRg9pRHNrtff/p7/GWBof3yPoWbKSxnqV30ZRlJZTMww0Yyaz4glVQt06ijUag0NHQKAfSUb8H+lw2vBBIbrO1wVoMy2bXl33F3mQRnT2LEyk48ZTUOB53ZplptZ2IxT0LJhZ5PgFypZb8PKRLbQNTsAbmJb1+CN4gNgnx0GUeaubBS9qKy+XcHoN+zL3D1AsXcoGj1agBdjoEq7x7RD/gwtef9luXoE9yYLaWcpTl90Z36AMPC2+/X52ekP8JkBWzch87pTVL0E6O67K2H2eX5uZrjLV87wSj1BTjNWxv1n0dQPvV5V1oKVYR94+Q== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by PR3PR01MB6234.eurprd01.prod.exchangelabs.com (2603:10a6:102:38::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.13; Mon, 20 Jun 2022 00:51:37 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5353.021; Mon, 20 Jun 2022 00:51:31 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 20 Jun 2022 02:51:21 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220619114056.5582-5-nil-admirari@mailo.com> References: <20220619114056.5582-5-nil-admirari@mailo.com> X-TMN: [gTblQrqct6ct/Y1pYUJcMsb9WzBzuSAe] X-ClientProxiedBy: ZR0P278CA0190.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:44::17) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220620005121.452585-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f682fb33-018f-46b7-47cd-08da525703f6 X-MS-TrafficTypeDiagnostic: PR3PR01MB6234:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 98HYUK/YtOzLxwf8dX4Haz7BsQFmbRcJQqbjjER5dsZkDSO3mu+NGnjXUK7/Q3gK3kmTIaWi8r6Pm0oI8WHzM3vqqbqEhAMYt+BNx2EXRLyfK6MEORsAdqj9MDHYY6uLjZUoo2dY4a0uexXpXS+Kk6N1bLkJ/9vtuHZR5S7NJtiEJmgBD5BrzxjRRLKz4RCyS5oqvynTolwalSIfkFjXC4CchV7hAcd79gelcE5p8sMic4mzuos81qiozPlhy1emynkei4X0T1OYjjVNtsgE9iZ4AgEX6xIhXIbWEMbTPCPU/s3pidiP+LH0TeaRjxZNoGhXWqa/W4dT0cMhkOWD0VFSTo1GF+Oc4O5DqS8szm0ksELce7viDm5nL9MdyzxEtsf+357n85OcU9q1zNdUqek3WRixtxQUIorSw3798DPIsMbgt3Y5jpR9EBnmJe8vKVDB2OiR0Lu7vIFxyToxE+7rjbmE43uHUNwn4hQyJCAYRNLA4i2/I0vJZjDa3vsyLBO5/zgQ334/by4xpP51tS0lAV3RHSV+d8hSTKNEJeAfb6itlmzdzLZ7Iqa2LfeXL2vpdKOhRQvTmWOnPrV8WCPX/arwLAStOjWMPTFkWDStG1PHwPp2TVVefwp//Q98 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: tlLQSkxUQ+qobVeNbubcaTL/eK4tGrZXnLzkGmYfUFHEB186Iyv0BVkr43pTH5caT5qvat2FgvWNnQKBGPw3AdWIUf/EfNIiybw0XsNCu6vW/IB2iyPgDIraAJX5MUb7xoLrc3LOgAOHZ4HRsHXUf5WscRR8hOkpuQrB6bHyOvsZsV8XqNys9Y+Jl/jdz+ArN+A/ub12aKhtqVV/o2Av9eb906kWCyqMz/V/cyMAM3Z8sSTx3PxfpkME/YUD2f5TJuRORYU+Z6i0bn/a3rr6r2wFalzAf6lCjKH8/RCl29tOU98hNxkrWqI58z+ihsLN55GH5AoaOOVP8cRQCrn0hW75QvlC1WnaqOVz89Uos6MD+LFnMWPxUlb+Pw6Pty8ghB6GBIxX58GdD+Qha80EFD1HgQtgZXm9SadE0e7re3dGploZjfOCRkrUjent677w25RHcaVxDtJcgSIMF3kZTF4dMO3bYDv/F32/fKLKdp1eQaEFpleVWC8a3dY5QIQEPR6gUPDRB14XCxYdGM7xcFp9VH4ZcA9GwzsYWs1/uIw/DI5VZgsBq21AUax0Vci3tIlTuu3/jjhZ6w94SlZn+e4g6nwQQl3t05OjazNlYBCQEaODrtHT5vSo6P/wmUrcsLnZ8Sa0579zYMmSqNsa8bjqx/X4ZX1F1I+dDgcEc1mYnHJr2NYTV7IqZcjUw2pVbWs7n8GvqFVHjB1IjETKI2cwcfgioJubpXyi3lE1L/ZBwQsxMl3oGVSvrsEFARpB17nZdAnYZZTk7Lh9Iu8JP4seM3ZthH3g60B6KiBig57zGzVZb+eB3yX0SOOqr/sazrQLA3u4vq53udrOnbVlw4/cSoLicMRW11hLgtk3Av++3QjkkKGmjWhWE4HEcUu34t1e+h0KHzl+TouRU4uxNwDGXhT3PYf0SvymNNpkssbi6ecDGOCyzEp8PBWeQC2EKNvujaXsLYdNyQ1IFSYbH6vXRc9xBgxmz13NBHXRLiKJoQVW+NqzyPOGh6KRJggtvFAIKk7x7lj0FYuUSIKVNBULH2Fqf2M3cyJ3kAF4CSAGJNvRjX44SARjeJSz83n6VO+jqDTR3fhmlAfFFVNrMtsrWYOCT/RosyHZJ+E2R0BcSAs1A6GRPXdUw4F+8ZAgQa5o/fbXtD5mxfYd4INK0GSsRp006DKfSqeYKyjZv3itRUjWEwmZHaLN+JZjrmmTG1e6udn20W+O0EwURCrtnh33Tq4miJyVu3JcgvfcKN7BWz35Z/NiG+xHt60BeINglExBu8+OVxJlB57VYzaRGVeWWzdox88C1EUDvCh2BcY6S1oMgUa3MCxfU4/cclWr5c7efGU9eK8bDLzhuIE6g4Bl8wtAAS65eiEUSwUcGq7SlFfHu2qkViFcSLWIrtA0a27/WP+zofHoqcymDF2wKh5b+bTCJSzY6wwoxpeyH79ogq3LBPFK9JzgxNt0WRrQ73RHkuyA7sDKrwGT+bLd0w== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f682fb33-018f-46b7-47cd-08da525703f6 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Jun 2022 00:51:31.1575 (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: PR3PR01MB6234 Subject: [FFmpeg-devel] [PATCH 5/5] libavfilter/vf_frei0r.c: Use UTF-8 version of getenv() 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: Nil Admirari Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: MQ1xad5mhxVa From: Nil Admirari --- This version has the advantage that duplicating the string is checked and that av_strdup(NULL) (whose behaviour is undocumented) is avoided. Here is a branch complete with these changes: https://github.com/mkver/FFmpeg/commits/getenv The Windows version has not been tested. libavfilter/vf_frei0r.c | 20 ++++++++++++++++---- libavutil/getenv_utf8.h | 12 ++++++++++++ 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/libavfilter/vf_frei0r.c b/libavfilter/vf_frei0r.c index f11ae6e55c..46b4175ba2 100644 --- a/libavfilter/vf_frei0r.c +++ b/libavfilter/vf_frei0r.c @@ -31,6 +31,7 @@ #include "libavutil/avstring.h" #include "libavutil/common.h" #include "libavutil/eval.h" +#include "libavutil/getenv_utf8.h" #include "libavutil/imgutils.h" #include "libavutil/internal.h" #include "libavutil/mathematics.h" @@ -204,13 +205,19 @@ static av_cold int frei0r_init(AVFilterContext *ctx, } /* see: http://frei0r.dyne.org/codedoc/html/group__pluglocations.html */ - if ((path = av_strdup(getenv("FREI0R_PATH")))) { + path = getenv_utf8("FREI0R_PATH"); + if (path) { #ifdef _WIN32 const char *separator = ";"; #else const char *separator = ":"; #endif char *p, *ptr = NULL; + + path = getenv_make_writable(path); + if (!path) + return AVERROR(ENOMEM); + for (p = path; p = av_strtok(p, separator, &ptr); p = NULL) { /* add additional trailing slash in case it is missing */ char *p1 = av_asprintf("%s/", p); @@ -231,12 +238,17 @@ static av_cold int frei0r_init(AVFilterContext *ctx, if (ret < 0) return ret; } - if (!s->dl_handle && (path = getenv("HOME"))) { + if (!s->dl_handle && (path = getenv_utf8("HOME"))) { char *prefix = av_asprintf("%s/.frei0r-1/lib/", path); - if (!prefix) - return AVERROR(ENOMEM); + if (!prefix) { + ret = AVERROR(ENOMEM); + goto home_path_end; + } ret = load_path(ctx, &s->dl_handle, prefix, dl_name); av_free(prefix); + + home_path_end: + freeenv_utf8(path); if (ret < 0) return ret; } diff --git a/libavutil/getenv_utf8.h b/libavutil/getenv_utf8.h index 03d108eed4..37a778b7aa 100644 --- a/libavutil/getenv_utf8.h +++ b/libavutil/getenv_utf8.h @@ -59,6 +59,11 @@ static inline void freeenv_utf8(char *var) av_free(var); } +static inline char *getenv_make_writable(char *var) +{ + return var; +} + #else static inline char *getenv_utf8(const char *varname) @@ -70,6 +75,11 @@ static inline void freeenv_utf8(char *var) { } +static inline char *getenv_make_writable(const char *var) +{ + return av_strdup(var); +} + #endif // _WIN32 #else @@ -78,6 +88,8 @@ static inline void freeenv_utf8(char *var) #define freeenv_utf8(x) ((void) 0) +#define getenv_make_writable(x) NULL + #endif // HAVE_GETENV #endif // AVUTIL_GETENV_UTF8_H