Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 12 Jun 2026 21:09:13 +0000
From:      Daniel Engberg <diizzy@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: fbb6fa8fab9b - main - net/gerbera: Fix URL parsing with libnpupnp
Message-ID:  <6a2c7579.264ba.7e235782@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by diizzy:

URL: https://cgit.FreeBSD.org/ports/commit/?id=fbb6fa8fab9b5927d4814d2484383e5fac2dcdc3

commit fbb6fa8fab9b5927d4814d2484383e5fac2dcdc3
Author:     Daniel Engberg <diizzy@FreeBSD.org>
AuthorDate: 2026-06-07 23:14:33 +0000
Commit:     Daniel Engberg <diizzy@FreeBSD.org>
CommitDate: 2026-06-12 21:08:50 +0000

    net/gerbera: Fix URL parsing with libnpupnp
    
    Backport upstream commit 3e73aeb54f5f4be70bc4c74f6c7362287bdbb13f
    
    Reference:
    https://github.com/gerbera/gerbera/pull/3882
    
    PR:             295000
    Reported by:    Heiko Kirschke <heiko.kirschke.orders@posteo.de>
---
 net/gerbera/Makefile                               |  1 +
 ...git-01-3e73aeb54f5f4be70bc4c74f6c7362287bdbb13f | 56 ++++++++++++++++++++++
 2 files changed, 57 insertions(+)

diff --git a/net/gerbera/Makefile b/net/gerbera/Makefile
index 083c637c9aa9..02d0532ca927 100644
--- a/net/gerbera/Makefile
+++ b/net/gerbera/Makefile
@@ -1,6 +1,7 @@
 PORTNAME=	gerbera
 DISTVERSIONPREFIX=	v
 DISTVERSION=	3.2.1
+PORTREVISION=	1
 CATEGORIES=	net multimedia
 
 MAINTAINER=	diizzy@FreeBSD.org
diff --git a/net/gerbera/files/patch-git-01-3e73aeb54f5f4be70bc4c74f6c7362287bdbb13f b/net/gerbera/files/patch-git-01-3e73aeb54f5f4be70bc4c74f6c7362287bdbb13f
new file mode 100644
index 000000000000..4bd2e0d74895
--- /dev/null
+++ b/net/gerbera/files/patch-git-01-3e73aeb54f5f4be70bc4c74f6c7362287bdbb13f
@@ -0,0 +1,56 @@
+From 3e73aeb54f5f4be70bc4c74f6c7362287bdbb13f Mon Sep 17 00:00:00 2001
+From: Karlchen <k_straussberger@netzland.net>
+Date: Sun, 7 Jun 2026 00:21:04 +0200
+Subject: [PATCH] Handle url decoding correctly
+
+---
+ ChangeLog.md          | 1 +
+ ReleaseNotes.md       | 1 +
+ src/upnp/compat.h     | 5 +++++
+ src/util/url_utils.cc | 3 ++-
+ 4 files changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/src/upnp/compat.h b/src/upnp/compat.h
+index 3470efe1d..cb1d91b15 100644
+--- src/upnp/compat.h
++++ src/upnp/compat.h
+@@ -46,6 +46,9 @@ static constexpr grb_read_t GRB_READ_ERROR = -1;
+ #define GrbUpnpFileInfoSetContentType(i, mt) (i)->content_type = std::move((mt))
+ #define GrbUpnpGetHeaders(i) (i)->request_headers
+ #define GrbUpnpSetHeaders(i, h) std::copy((h).begin(), (h).end(), std::back_inserter((i)->response_headers))
++// npupnp reencodes the query arguments to build a parsable URL. We need another
++// decoding layer when using it.
++#define GrbUrlUnescape(u) urlUnescape(urlUnescape(u))
+ 
+ #define UPNP_NEEDS_LITERAL_HOST_REDIRECT
+ extern "C" void UpnpSetAllowLiteralHostRedirection(int);
+@@ -80,6 +83,8 @@ void UpnpSetHeadersCompat(const UpnpFileInfo* fileInfo, const std::map<std::stri
+ #define GrbUpnpGetHeaders(i) UpnpGetHeadersCompat(i)
+ #define GrbUpnpSetHeaders(i, h) UpnpSetHeadersCompat(i, h)
+ 
++#define GrbUrlUnescape(u) urlUnescape(u)
++
+ #if (UPNP_VERSION <= 11419) or (UPNP_VERSION > 170000 and UPNP_VERSION <= 170110)
+ // new method added
+ #define UPNP_NEEDS_CORS
+diff --git a/src/util/url_utils.cc b/src/util/url_utils.cc
+index 884f23667..3a80e9096 100644
+--- src/util/url_utils.cc
++++ src/util/url_utils.cc
+@@ -24,6 +24,7 @@ Gerbera - https://gerbera.io/
+ #include "url_utils.h" // API
+ 
+ #include "exceptions.h"
++#include "upnp/compat.h"
+ 
+ #include <fmt/format.h>
+ #if FMT_VERSION >= 100202
+@@ -195,7 +196,7 @@ std::map<std::string, std::string> dictDecode(std::string_view url, bool unEscap
+             auto key = std::string_view(data, eqPos - data);
+             auto value = std::string_view(eqPos + 1, ampPos - eqPos - 1);
+             if (unEscape) {
+-                dict.try_emplace(urlUnescape(key), urlUnescape(value));
++                dict.try_emplace(GrbUrlUnescape(key), GrbUrlUnescape(value));
+             } else {
+                 dict.emplace(key, value);
+             }


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6a2c7579.264ba.7e235782>