diff --git a/.dleyna-server.metadata b/.dleyna-server.metadata index 2024df6..e9124b1 100644 --- a/.dleyna-server.metadata +++ b/.dleyna-server.metadata @@ -1 +1 @@ -eacc0433a3fb25cc71306a61346898da12860fff SOURCES/dleyna-server-0.4.0-3fcae06.tar.gz +efd83a8a0588327c7c3604cb48af4abb95a96a47 SOURCES/dleyna-server-0.5.0.tar.gz diff --git a/.gitignore b/.gitignore index a90974d..cb2daef 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/dleyna-server-0.4.0-3fcae06.tar.gz +SOURCES/dleyna-server-0.5.0.tar.gz diff --git a/SOURCES/0001-Fix-possible-use-after-free-on-exit.patch b/SOURCES/0001-Fix-possible-use-after-free-on-exit.patch new file mode 100644 index 0000000..907c732 --- /dev/null +++ b/SOURCES/0001-Fix-possible-use-after-free-on-exit.patch @@ -0,0 +1,55 @@ +From 2a09e2b15e7493256de4f40331ce6be4e1fe90f4 Mon Sep 17 00:00:00 2001 +From: Bastien Nocera +Date: Thu, 3 Dec 2015 18:28:46 +0100 +Subject: [PATCH] Fix possible use-after-free on exit + +When the last client of dleyna-server exits, and dleyna-server +tries to exit, it might use the "upnp" pointer after it was freed as we +receive a signal where the user_data is invalid. Avoid that by zero'ing +freed pointers and disconnecting from the signal for which "upnp" is +user_data. + +See https://retrace.fedoraproject.org/faf/reports/855440/ +--- + libdleyna/server/server.c | 5 ++++- + libdleyna/server/upnp.c | 3 +++ + 2 files changed, 7 insertions(+), 1 deletion(-) + +diff --git a/libdleyna/server/server.c b/libdleyna/server/server.c +index ec725de3f6b3..865336162d61 100644 +--- a/libdleyna/server/server.c ++++ b/libdleyna/server/server.c +@@ -1352,12 +1352,15 @@ static void prv_control_point_stop_service(void) + { + uint i; + +- if (g_context.manager) ++ if (g_context.manager) { + dls_manager_delete(g_context.manager); ++ g_context.manager = NULL; ++ } + + if (g_context.upnp) { + dls_upnp_unsubscribe(g_context.upnp); + dls_upnp_delete(g_context.upnp); ++ g_context.upnp = NULL; + } + + if (g_context.connection) { +diff --git a/libdleyna/server/upnp.c b/libdleyna/server/upnp.c +index 6d6c696dd42c..dcf31d98f171 100755 +--- a/libdleyna/server/upnp.c ++++ b/libdleyna/server/upnp.c +@@ -547,6 +547,9 @@ dls_upnp_t *dls_upnp_new(dleyna_connector_id_t connection, + void dls_upnp_delete(dls_upnp_t *upnp) + { + if (upnp) { ++ g_signal_handlers_disconnect_by_func (G_OBJECT (upnp->context_manager), ++ G_CALLBACK(prv_on_context_available), ++ upnp); + g_object_unref(upnp->context_manager); + g_hash_table_unref(upnp->property_map); + g_hash_table_unref(upnp->filter_map); +-- +2.5.5 + diff --git a/SOURCES/0001-Include-libgupnp-gupnp-context-manager.h.patch b/SOURCES/0001-Include-libgupnp-gupnp-context-manager.h.patch new file mode 100644 index 0000000..f810eb1 --- /dev/null +++ b/SOURCES/0001-Include-libgupnp-gupnp-context-manager.h.patch @@ -0,0 +1,27 @@ +From 7c7331440d22b1e987d0e6fd0d4337e57011e6cc Mon Sep 17 00:00:00 2001 +From: Dominique Leuenberger +Date: Mon, 14 Nov 2016 12:51:11 +0100 +Subject: [PATCH] Include libgupnp/gupnp-context-manager.h + +As we make use of the type 'GUPnPContextManager' we need to ensure that +this is known here. Relying on any other random header to being this in +for us is unreliable (and has been seen failing in the wild). +--- + libdleyna/server/upnp.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/libdleyna/server/upnp.h b/libdleyna/server/upnp.h +index 6e1aa556c473..ca053fc53eae 100755 +--- a/libdleyna/server/upnp.h ++++ b/libdleyna/server/upnp.h +@@ -24,6 +24,7 @@ + #define DLS_UPNP_H__ + + #include ++#include + + #include "client.h" + #include "async.h" +-- +2.9.3 + diff --git a/SPECS/dleyna-server.spec b/SPECS/dleyna-server.spec index dd5504a..bb21fc1 100644 --- a/SPECS/dleyna-server.spec +++ b/SPECS/dleyna-server.spec @@ -1,31 +1,33 @@ %global api 1.0 -%global commit 3fcae066b44195c187b5611acfd511b9a87850d0 -%global shortcommit %(c=%{commit}; echo ${c:0:7}) Name: dleyna-server -Version: 0.4.0 +Version: 0.5.0 Release: 1%{?dist} Summary: Service for interacting with Digital Media Servers License: LGPLv2 URL: https://01.org/dleyna/ - -Source0: https://github.com/01org/%{name}/archive/%{commit}/%{name}-%{version}-%{shortcommit}.tar.gz +Source0: https://01.org/dleyna/sites/default/files/downloads/%{name}-%{version}.tar.gz BuildRequires: autoconf automake libtool -BuildRequires: dleyna-core-devel -BuildRequires: glib2-devel >= 2.28 -BuildRequires: gssdp-devel >= 0.13.2 -BuildRequires: gupnp-devel >= 0.20.3 -BuildRequires: gupnp-av-devel >= 0.11.5 -BuildRequires: gupnp-dlna-devel >= 0.9.4 -BuildRequires: libsoup-devel -BuildRequires: pkgconfig +BuildRequires: pkgconfig(dleyna-core-1.0) >= 0.5.0 +BuildRequires: pkgconfig(gio-2.0) >= 2.28 +BuildRequires: pkgconfig(glib-2.0) >= 2.28 +BuildRequires: pkgconfig(gobject-2.0) >= 2.28 +BuildRequires: pkgconfig(gssdp-1.0) >= 0.13.2 +BuildRequires: pkgconfig(gupnp-1.0) >= 0.20.3 +BuildRequires: pkgconfig(gupnp-av-1.0) >= 0.11.5 +BuildRequires: pkgconfig(gupnp-dlna-2.0) >= 0.9.4 +BuildRequires: pkgconfig(libsoup-2.4) >= 2.28.2 Requires: dbus Requires: dleyna-connector-dbus # https://github.com/01org/dleyna-server/issues/145 Patch0: 0001-Device-Fix-ChildCount-property-type.patch +# https://github.com/01org/dleyna-server/pull/151 +Patch1: 0001-Fix-possible-use-after-free-on-exit.patch +# https://github.com/01org/dleyna-server/pull/159 +Patch2: 0001-Include-libgupnp-gupnp-context-manager.h.patch %description D-Bus service for clients to discover and manipulate DLNA Digital Media @@ -33,8 +35,11 @@ Servers (DMSes). %prep -%setup -qn %{name}-%{commit} +%setup -q %patch0 -p1 +%patch1 -p1 +%patch2 -p1 + %build autoreconf -fiv @@ -45,11 +50,11 @@ autoreconf -fiv # Omit unused direct shared library dependencies. sed --in-place --expression 's! -shared ! -Wl,--as-needed\0!g' libtool -make %{?_smp_mflags} +%make_build %install -make install INSTALL="%{__install} -p" DESTDIR=$RPM_BUILD_ROOT +%make_install find $RPM_BUILD_ROOT -name '*.la' -delete -print # We don't need a -devel package because only the daemon is supposed to be @@ -74,6 +79,10 @@ rm -rf $RPM_BUILD_ROOT/%{_libdir}/pkgconfig %changelog +* Fri Mar 03 2017 Debarshi Ray - 0.5.0-1 +- Update to 0.5.0 +Resolves: #1386847 + * Tue Jun 02 2015 Debarshi Ray - 0.4.0-1 - Initial RHEL import Resolves: #1219532