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 CB4914CF16 for ; Sun, 2 Nov 2025 22:17:53 +0000 (UTC) Authentication-Results: ffbox; dkim=fail (body hash mismatch (got b'kah+34TEIbiZAOpsoGH9BfrOapx9FAfl3/2aMbtTpeg=', expected b'8TVrQl3uDR1zdOpOrzRUKB8Qvb6iBkO36CEAcKZyVfA=')) header.d=ffmpeg.org header.i=@ffmpeg.org header.a=rsa-sha256 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1762121868; h=mime-version : to : date : message-id : reply-to : subject : list-id : list-archive : list-archive : list-help : list-owner : list-post : list-subscribe : list-unsubscribe : from : cc : content-type : content-transfer-encoding : from; bh=kah+34TEIbiZAOpsoGH9BfrOapx9FAfl3/2aMbtTpeg=; b=lGJ4233v4bEVAHX8IhvtqkXK2/eAAU3t2DV3QkzJedfBRU0HdUhyxOGZdkhp9D9kN0j3B lJDxeO9JMkE7MSLOPUbrdc1RngKC7GKRxU8iyPqK1FoPE6qPISKssPo6HkpQeFG59dBz/Cy WTcjssOcAlKRo6S6krxPO2Qdcd1Xrq/IJU+RIkxhXQ5zGS4d/BtclICeBK+FzC0awA5a0jm +rUhhpbaSGurESb6NJ3AMLkuVGwyac0uITpbgDYiXnxaP9ZoCD3tJeneTclOGiAiS14XyjG W3RRPM1q752QzBBPkeFQomUd3Z6Sa6vV5VWeChAVdiT2I5FycCXomI/lb04A== Received: from [172.19.0.2] (unknown [172.19.0.2]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 9C59E68F929; Mon, 3 Nov 2025 00:17:48 +0200 (EET) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=ffmpeg.org; s=arc; t=1762121853; b=JGLGpOFt0VsTZglU9L/GXfvIULyw+lIahhYwAKVWTX+kF2R9G+mZ/Hp4XMkTS81VR+WD6 InmioEEoYuK4gK3kF6Es9xH5iu8mtaqh2zUOTQmHWNJ/YFvH7KqAyildzRMNWJvV6228how 0QiN8NsHOZU6ZYPNe61FgQw+a9wOw771A/2kddF8mXuMghQCvRtEpKpluWKczVZdSNLexCN qK7FCOEMzb5Uhmu0Drr56XCPCX/+d0zVIz4G1r9sTRflzz5+GtLmiEMM7RbnDo8kEKngK4w Brirv1zotW2Vs8CcNwhP3i9EN5fkePp2i6krYnH5GJNrfdMKRzWwlcCfGwmA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=ffmpeg.org; s=arc; t=1762121853; h=from : sender : reply-to : subject : date : message-id : to : cc : mime-version : content-type : content-transfer-encoding : content-id : content-description : resent-date : resent-from : resent-sender : resent-to : resent-cc : resent-message-id : in-reply-to : references : list-id : list-help : list-unsubscribe : list-subscribe : list-post : list-owner : list-archive; bh=xyCsgzaRCbejrwj1/WutMPDdvnq2JCy0Tqi+/4qW99w=; b=Wd6XVhCAwXacJj9U8kdzHZvo4a3DPea6rxwfD5YSDdLhT11XhxCjeeXVACYHIMsfwIEMI 9M2ft11h32wCzQ9Zf+DIesnw4cjDaUiDMGsxeb/nEF1stIjlFcxXwBkHnDW/j/zTpp8/FoW 5BS7b2ZLZzb1N8zNAgyIwGYNWLCAhIbtjQ3gxXxWnTzaumnkhowPdRrhqMsHXg82yr8XnKi yCVjX4jdUESaGwFVSYAxrRe3ocM3ZQlI6BVYQc0N40gV3lV7LP01pYD+w5uWFlbWbvdovoU CwpMWsNldJn4wgps1BrWPuEh0131xuRZ+XMQZvfD/MRg3htv4zt3+HkM3vUw== ARC-Authentication-Results: i=1; ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none; dmarc=pass header.from=ffmpeg.org policy.dmarc=quarantine Authentication-Results: ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none (Message is not ARC signed); dmarc=pass (Used From Domain Record) header.from=ffmpeg.org policy.dmarc=quarantine DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1762121847; h=content-type : mime-version : content-transfer-encoding : from : to : reply-to : subject : date : from; bh=8TVrQl3uDR1zdOpOrzRUKB8Qvb6iBkO36CEAcKZyVfA=; b=pVimaSdx5RIdVaAA965lUhWPQBtk51rYJ76OlR00qAldBm1RHvVBoysqyWHYJNdPi7XuA e3K6uczQACQFosgGmreJRiduJUXmp9e607qBzdV7jWkVIDxv+0U1bYkN7PHNw1h9bl5zAqs FpWKeK+xxt28E6ykr4Ir0gn5HYr+2/C6zEYl53T2E79xE6E5sLro7zEgXCN/sX3yicqaJje oMfacQCEZz7aM1yCxvjOKcoywt07LxUF9v7zc7pDtt8OHB04IrF1gX8VetRrWXz4fOkqqQZ T1kWuawQcjwsn40BEKQ7TwqVtSTbjRM2IB2U/m/6OvjroI6vAmpM6fhNFlJw== Received: from 02c22a36bd31 (code.ffmpeg.org [188.245.149.3]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 05CB268F8E4 for ; Mon, 3 Nov 2025 00:17:26 +0200 (EET) MIME-Version: 1.0 To: ffmpeg-devel@ffmpeg.org Date: Sun, 02 Nov 2025 22:17:26 -0000 Message-ID: <176212184715.25.548743367229097133@2cb04c0e5124> Message-ID-Hash: 7NE5VZNFXULPLEBWRF3NGDFHGH73W5MO X-Message-ID-Hash: 7NE5VZNFXULPLEBWRF3NGDFHGH73W5MO X-MailFrom: code@ffmpeg.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-ffmpeg-devel.ffmpeg.org-0; header-match-ffmpeg-devel.ffmpeg.org-1; header-match-ffmpeg-devel.ffmpeg.org-2; header-match-ffmpeg-devel.ffmpeg.org-3; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list Reply-To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH] avformat/dashdec: Fix urls with special characters in manifest (PR #20823) List-Id: FFmpeg development discussions and patches Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Hendi48 via ffmpeg-devel Cc: Hendi48 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Archived-At: List-Archive: List-Post: PR #20823 opened by Hendi48 URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20823 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20823.patch This fixes a long standing bug where URLs with multiple query parameters broke the DASH manifest parser. libxml2 will decode entities when fetching node content, but when setting it back with `xmlNodeSetContent`, it's the caller's responsibility to ensure special chars like ampersands are encoded. Fixes trac https://trac.ffmpeg.org/ticket/7395 >>From eb58d8deccff900f11e03874e64ed7632d28cd97 Mon Sep 17 00:00:00 2001 From: Hendi Date: Sun, 2 Nov 2025 23:11:02 +0100 Subject: [PATCH] avformat/dashdec: Fix urls with special characters in manifest This was especially a problem with ampersands, which occur frequently as part of query parameters. --- libavformat/dashdec.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libavformat/dashdec.c b/libavformat/dashdec.c index 1f59d3a41c..9b52f24564 100644 --- a/libavformat/dashdec.c +++ b/libavformat/dashdec.c @@ -709,6 +709,7 @@ static int resolve_content_path(AVFormatContext *s, const char *url, int *max_ur char *path = NULL; char *mpdName = NULL; xmlNodePtr node = NULL; + xmlChar *escaped = NULL; char *baseurl = NULL; char *root_url = NULL; char *text = NULL; @@ -780,7 +781,9 @@ static int resolve_content_path(AVFormatContext *s, const char *url, int *max_ur } root_url = (av_strcasecmp(baseurl, "")) ? baseurl : path; if (node) { - xmlNodeSetContent(node, root_url); + escaped = xmlEncodeSpecialChars(NULL, root_url); + xmlNodeSetContent(node, escaped); + free(escaped); updated = 1; } @@ -814,8 +817,10 @@ static int resolve_content_path(AVFormatContext *s, const char *url, int *max_ur memset(p + 1, 0, strlen(p)); } av_strlcat(tmp_str, text + start, tmp_max_url_size); - xmlNodeSetContent(baseurl_nodes[i], tmp_str); + escaped = xmlEncodeSpecialChars(NULL, tmp_str); + xmlNodeSetContent(baseurl_nodes[i], escaped); updated = 1; + xmlFree(escaped); xmlFree(text); } } -- 2.49.1 _______________________________________________ ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org