From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id EAB154CE7F for ; Fri, 13 Jun 2025 23:34:47 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 29DF268CD02; Sat, 14 Jun 2025 02:34:44 +0300 (EEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10olkn2041.outbound.protection.outlook.com [40.92.41.41]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 4CADE68CB8E for ; Sat, 14 Jun 2025 02:34:38 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=fPFKcWUkd+YoNzTEbl19O/QMSynQHUyMb2Exd6Qrnez1/ejubKXNYU1rvNVVkm8pwOhML1zeqnu+BXnMQ3zy0Szl3E3xEAZi+8bQOCxDI+fjX3whhABVWcDx7GXphpQwKF7LgPB7AclUchXk2f18G/MiuCqv0XVWkmJDnQWdXLuKBWZrW/9YMWSERXjxHsGfTEqqVjwZyYALoOHe4v5aWXyBV2hmbdA571nXPQFCTAtF4mDnVmREM4LCMpbtXpXwBnZttqBj79h2d0RL82fmPssPnFZtAPvpnfU+WZPY9WPbuxa+7WmvAw6TTuQLLEfg8utclfTo2ZkFsxWnPyapZg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=oyGEKC7lvepxc6PTuexCW8BGKxSQVBnEJZwp8qTfxoU=; b=bvLl+7oXi3A+OWSz1kj4dcUjV+/2scNB7PRfSPhZXBWNO4Q1WroTwl+hBpbUQuZAPWnQKS49EH8FPDQE+9fgL+RXpcotDRajo1pNAHRKHpO0xfx28Pkr+/20SF/o6ifbH2MioneOJ29YRFD8DCW3Wl8Gn22QLkhVyrolSN4k+3vUUfPzv6HGBJr9hJSncGBQrdbqoz2ZfbjdMcDkizpP/XZdV65uIjYY2uJCBmbzCgnLWutkynhoPKIHy/AxOzIrLo8fz6HTLRgsUPqsaafHDuJrbuev64XWlPEgNHuNSR+3IRQUisxg9azFihej3dJxOflUjkuyeHfK4YZrC0SnSw== 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=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=oyGEKC7lvepxc6PTuexCW8BGKxSQVBnEJZwp8qTfxoU=; b=KZcnqeZLVVzZh546dJb3Zh9H+wEtCuSICkTDhxvCVsT0XaG+OXDXA16QHlmEJ0e9AWOF/y1yD59JGY3mqcD8zYMarRrWLsYpsS85xajHU5v+AEjuyGN/iYz39W52JrCTnPWuJbca6hj9dMwlVuwp5VRt6Tx+qYZArbFCTrGdtej7HWDBvYUKovR05JxFwNtD1CgpRLpQsP3SeKguZO7NliG/G4YMPQ4I1eJNpBIw+mb4B05ixEWxm9En49NOVMGL/6xccd4hYuwXfCkAXStlE62kDGCaSI+ek/UyonKu2sI1NeTvYnkx2/S91go3cDeAnZSU8P7BihrKxna8cgc/qw== Received: from DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM (2603:10b6:8:b::20) by CH3P223MB1169.NAMP223.PROD.OUTLOOK.COM (2603:10b6:610:1d7::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8813.28; Fri, 13 Jun 2025 23:34:35 +0000 Received: from DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM ([fe80::bf09:8e9:b07f:98a7]) by DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM ([fe80::bf09:8e9:b07f:98a7%6]) with mapi id 15.20.8835.023; Fri, 13 Jun 2025 23:34:35 +0000 From: "softworkz ." To: FFmpeg development discussions and patches Thread-Topic: [FFmpeg-devel] [PATCH 3/3] avformat/hlsenc: Fix path handling for Windows Thread-Index: AQHb3IdyB5S/rugrM06Gp4J5mZ3YxrQBnUkAgAAC5XA= Date: Fri, 13 Jun 2025 23:34:35 +0000 Message-ID: References: <99dfda242076be814b80d9adb0722e860f95cf6a.1749835195.git.ffmpegagent@gmail.com> <9199955b-d517-2a9b-fd2b-ddda1833493c@passwd.hu> In-Reply-To: <9199955b-d517-2a9b-fd2b-ddda1833493c@passwd.hu> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM8P223MB0365:EE_|CH3P223MB1169:EE_ x-ms-office365-filtering-correlation-id: eefb142c-00c1-429c-f34a-08ddaad2db09 x-microsoft-antispam: BCL:0; ARA:14566002|19110799006|7092599006|41001999006|8060799009|8062599006|461199028|15080799009|440099028|3412199025|102099032|40105399003; x-microsoft-antispam-message-info: =?us-ascii?Q?xXCDMvh07+y61uBIsOghchMA3wGQKpYWHPzBkxrUoKYXoMM95lRjrJ3NG9Yf?= =?us-ascii?Q?ZfKhY/fG6SZaYKmHas4kjEILs6nXdgdalVdzAhQFXdg3Sn/DrBa+GOTFPTva?= =?us-ascii?Q?KtRnsugnDzavo070pyFWeRNwKY1Q5+5JOQGCz1Z4bGn4C1VEVe1vJEdakIrP?= =?us-ascii?Q?8eybhGZ1vdWN3VfbTMqAwoyPuvG0SXvfC/lDpZlkKBimut4vmVohUWvQ6z2Q?= =?us-ascii?Q?sVncGSfD0XTl6J5nI5a9Amo7dAiNT6Py2GK/ZMO6muVXOPDR+5QS1nfcxQqX?= =?us-ascii?Q?WAQWRzGiJTaQQSmnhGq2HYm3Mmj0boXa/MsmG3G/bbkAhU3kad01OMGp8xpz?= =?us-ascii?Q?eu3BA1CbjEO54rcs5vyAOgbc6s0jXZycAuRBvilCEaq04oKUgrLGe1XpjJpr?= =?us-ascii?Q?iFQn8Nqz+4Yj/D1LO7POKurR8eBzU/yeBQQAhKQrG1SYyHbeCJUeyq0waQUe?= =?us-ascii?Q?lS2+oPuwkYxAvrOf3IiKEjWN+ye4pXogPVyIBpYo/sN/whApVRDlgmQ8wQr1?= =?us-ascii?Q?fCOhYP7gLdDjJE1TIrDRsph4pfScKI5cysaYN8V/yPckCEfOda2bSJ3EATTB?= =?us-ascii?Q?PJXGx9AVEYmSA5uhMxI14twyBhBu3pZ4ifzOSXvVdUBfsdrzZKmv1OJrl+QC?= =?us-ascii?Q?0hLzCjzzeJ76SYnDK22az9IqtQc2p94bYPuSvymNyqEIDwYD8PNmmrWME/FF?= =?us-ascii?Q?tOEJ7FeWAYJ6YqUff2Soqms0ZlWa4fmrllVZkeZwCvrTBk2lkuGn2tMocNao?= =?us-ascii?Q?jWoGtLNGdTyqsg/oQsoaVgivEcLOG6r6yb8pEdAN9+aosU4i0mqGKxOMnTLK?= =?us-ascii?Q?PnNIALIVN8dBS0PKX3OIcNGK7e1apaioo7iMA6TWuz0QeAGOrtfoiSTmj8X1?= =?us-ascii?Q?JyBWIVVuVGsu82Yl8zrQkC20jgDpcd2Fz+LsXSro2dhoNHMScbnI2WPKl9PO?= =?us-ascii?Q?ms3G14VzdtKYBYOngELPpA28yn/K6fuqhElhH2Tdf8/YAwwR/Rn3i9WH4WJh?= =?us-ascii?Q?I1J7OfsZh32CtjvGkmuftX8RoNABRI72hibxef365tKukitVfckBJQm9Jeb3?= =?us-ascii?Q?CzTGBbFYJvw8uRtWV3rIecGK+BsRI+P5nieMzZq2XoDhE4DaH4kQtYm+rK0E?= =?us-ascii?Q?fotyBGdXiOAspaYaaaCJ4NNYB00ojQPf2SQxtmReNmfjA/HP0DH9UX8=3D?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?V/VEMTFgJOVvGOB6DXrJUfHdclp0qyOinxbNcBPVcl65xmwV07MlhddFXkL/?= =?us-ascii?Q?6RylUqPzbRS3Bh4TzFdt5U80HFQ5kAx6KxnH9MjDh5uoBjyn6MQlRzq+89y+?= =?us-ascii?Q?VJcFeIy5KlOI3a6vgvVem3MnnxoiG5ZNg3qZmhH2CXyIksMevoF7XZGEbcep?= =?us-ascii?Q?hu2P8uwCnvvp2N/+AmsrdllWGstg2bKmAQR05cBGHMeY5uJW0fzPPQyi4H4B?= =?us-ascii?Q?mvSraObPRsIvDkh792wIDUyLkKl+PPQsfXXPEoT1lATHxppikVj25emkaQDK?= =?us-ascii?Q?egBVFL/kf7Z570PSOSdfoUKlgPUjBBoYSqa7rp6l0zgvmKJHEa84YkdDw1YE?= =?us-ascii?Q?YQqLVJJdiqteT3TtSCwpCHgF/G4+GSA38pLRaHdP38Z/jp9OTnN/hQsp88yc?= =?us-ascii?Q?q1z/RUv0WMyxSFCldPfSEbCEvXmjA72MDkqmuNRYOrKqALDQoSPfoVI2ZKkW?= =?us-ascii?Q?rCGesUR+1RDTbCVUydU0NBNKqU3WAZibB9zILmcou9qTtf0pHs07L4fu3n1j?= =?us-ascii?Q?ZjbW295aG30KeAgdZ/T7zhedgvgk4/vLp5nY5kwWSs7lKnIKZ13ajPouvyzH?= =?us-ascii?Q?l0yYMB8PPpW31y+kkjfPrKDfqkyNj1nQgr4+khG9jUFpx2I7IIfqTWSYdVIN?= =?us-ascii?Q?tCydgctoaG2VSE1J3vAIManw/EtXr3NGdz/Gce01tGEdiMQYA6na3mpQxBqQ?= =?us-ascii?Q?iMKL6dVYxOqrfKP2HPo6t7oghPoD/NI5MQB/vYS5E4IJRGbcDNZ3rWwflW78?= =?us-ascii?Q?hwTI0g5Nt6kd98U9bRPTFd+e3u0GJBoNqq2VYRHn1thPRPyY1DR3NMPleZiO?= =?us-ascii?Q?YkqwcQ+lh+mfda2GQmn1MtMpm57lN/f6ay0cWBL2MKVaqR8sfzp7qlcX7Sj2?= =?us-ascii?Q?XPCXTreSy+kqrSdL1bDnlDvVNisApZkxu1xJdMMS1j3mxUb36aFhlGkoglkt?= =?us-ascii?Q?pDwRULyV72RdtxAsMhP5lkEnJYjyh2ob7RzWwu82bdQOoZSHdmXjdTUA4qx1?= =?us-ascii?Q?fdChHFiv29YwUQdgeixcEOHPM6P06EkqSzmBZzcVnozbhcZr3SDJNmhyIZ5u?= =?us-ascii?Q?7uiWXEUCbqMm4Q6tSMpgncJnlPlOUrr9At1TQZablBfgp7we2qgzecLd2sWe?= =?us-ascii?Q?63DO1uk3kWe6MlT8EvhPAGSEisLa6JaumKoF1hF5n4qad9pCx0VxLHw860sj?= =?us-ascii?Q?PplSmW3qF95FWVcjIokhYcrL2DXHeOjAwWSaneMkJQ4+0m+2c/JOetIqlog?= =?us-ascii?Q?=3D?= MIME-Version: 1.0 X-OriginatorOrg: sct-15-20-8534-20-msonline-outlook-c7cf3.templateTenant X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: eefb142c-00c1-429c-f34a-08ddaad2db09 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Jun 2025 23:34:35.0764 (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: CH3P223MB1169 Subject: Re: [FFmpeg-devel] [PATCH 3/3] avformat/hlsenc: Fix path handling for Windows 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: > -----Original Message----- > From: ffmpeg-devel On Behalf Of > Marton Balint > Sent: Freitag, 13. Juni 2025 23:36 > To: FFmpeg development discussions and patches devel@ffmpeg.org> > Subject: Re: [FFmpeg-devel] [PATCH 3/3] avformat/hlsenc: Fix path > handling for Windows > > > > On Fri, 13 Jun 2025, softworkz wrote: > > > From: softworkz > > > > Can you give an example where the path handling is wrong and where > this > patch fixes it? c:\hls\video1\master.m3u8 > Is there a trac ticket? Good question, there well may be. > > > Signed-off-by: softworkz > > --- > > libavformat/hlsenc.c | 43 ++++++++++++++++++++++++++++----------- > ---- > > 1 file changed, 28 insertions(+), 15 deletions(-) > > > > diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c > > index f81385d0b4..ba1e74e999 100644 > > --- a/libavformat/hlsenc.c > > +++ b/libavformat/hlsenc.c > > @@ -329,6 +329,23 @@ static int hlsenc_io_close(AVFormatContext > *s, AVIOContext **pb, char *filename) > > return ret; > > } > > > > +static int get_last_separator_pos(const char *path) > > size_t Cannot return -1. > > +{ > > + if (!path || *path == '\0') > > + return -1; > > + > > + char *p = strrchr(path, '/'); > > +#if HAVE_DOS_PATHS > > + char *q = strrchr(path, '\\'); > > + p = FFMAX(p, q); > > You are comparing potentially NULL pointers here. It's the same like in av_basename() or av_dirname() > > +#endif > > + > > + if (!p) > > + return -1; > > + > > + return p - path; > > +} > > + > > static void set_http_options(AVFormatContext *s, AVDictionary > **options, HLSContext *c) > > { > > int http_base_proto = ff_is_http_proto(s->url); > > @@ -1408,14 +1425,10 @@ static int > hls_rename_temp_file(AVFormatContext *s, AVFormatContext *oc) > > > > static const char* get_relative_url(const char *master_url, const > char *media_url) > > { > > - const char *p = strrchr(master_url, '/'); > > - size_t base_len = 0; > > - > > - if (!p) p = strrchr(master_url, '\\'); > > + int pos = get_last_separator_pos(master_url); > > size_t, and you can keep using base_len variable, you don't have to > rename, it is used for the same purpose as before. > > > > > - if (p) { > > - base_len = p - master_url; > > - if (av_strncasecmp(master_url, media_url, base_len)) { > > + if (pos >= 0) { That's the check for not being -1 int64_t should cover the whole range - can I use that instead? > > + if (av_strncasecmp(master_url, media_url, pos)) { > > av_log(NULL, AV_LOG_WARNING, "Unable to find relative > url\n"); > > return NULL; > > } > > @@ -1423,7 +1436,7 @@ static const char* get_relative_url(const > char *master_url, const char *media_ur > > return media_url; > > } > > > > - return media_url + base_len + 1; > > + return media_url + pos + 1; > > } > > > > static int64_t get_stream_bit_rate(AVStream *stream) > > @@ -3151,13 +3164,13 @@ static int hls_init(AVFormatContext *s) > > vs->fmp4_init_filename = expanded; > > } > > > > - p = strrchr(vs->m3u8_name, '/'); > > - if (p) { > > - char tmp = *(++p); > > - *p = '\0'; > > - vs->base_output_dirname = > av_asprintf("%s%s", vs->m3u8_name, > > - vs- > >fmp4_init_filename); > > - *p = tmp; > > + int pos = get_last_separator_pos(vs->m3u8_name); > > + if (pos >= 0) { > > + AVBPrint buf; > > + av_bprint_init(&buf, 0, > AV_BPRINT_SIZE_UNLIMITED); > > + av_bprint_append_data(&buf, vs->m3u8_name, > pos + 1); > > + av_bprintf(&buf, "%s", vs- > >fmp4_init_filename); > > + av_bprint_finalize(&buf, &vs- > >base_output_dirname); > > av_bprintf here is unneeded, because in the end you have to malloc > the > result anyway. Keep using av_asprintf() with "%*s" to limit the > length. Ah, right, that's better, will do. Thanks again, sw _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".