From ba21e4b1b044141c380c6f566eb569304a89bc0c Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Wed, 9 Jun 2021 08:55:21 -0400 Subject: [PATCH] import gupnp-1.0.6-2.el8_4 --- .gitignore | 1 + .gupnp.metadata | 1 + ...-Add-test-for-host-header-validation.patch | 180 +++++++ ...-context-Use-SoupURI-instead-of-GUri.patch | 63 +++ .../0001-service-Validate-host-header.patch | 118 +++++ SPECS/gupnp.spec | 459 ++++++++++++++++++ 6 files changed, 822 insertions(+) create mode 100644 .gitignore create mode 100644 .gupnp.metadata create mode 100644 SOURCES/0001-Tests-Add-test-for-host-header-validation.patch create mode 100644 SOURCES/0001-context-Use-SoupURI-instead-of-GUri.patch create mode 100644 SOURCES/0001-service-Validate-host-header.patch create mode 100644 SPECS/gupnp.spec diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b6adfc2 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/gupnp-1.0.6.tar.xz diff --git a/.gupnp.metadata b/.gupnp.metadata new file mode 100644 index 0000000..11f1c28 --- /dev/null +++ b/.gupnp.metadata @@ -0,0 +1 @@ +dd8c2ae186076d9adf401f747a89a35059bf26ab SOURCES/gupnp-1.0.6.tar.xz diff --git a/SOURCES/0001-Tests-Add-test-for-host-header-validation.patch b/SOURCES/0001-Tests-Add-test-for-host-header-validation.patch new file mode 100644 index 0000000..08ff1ae --- /dev/null +++ b/SOURCES/0001-Tests-Add-test-for-host-header-validation.patch @@ -0,0 +1,180 @@ +From 125e957092083ea37cf8ac712fa62587e3817242 Mon Sep 17 00:00:00 2001 +From: Jens Georg +Date: Mon, 10 May 2021 11:45:57 +0200 +Subject: [PATCH] Tests: Add test for host header validation + +--- + libgupnp/gupnp-context-private.h | 5 ++ + libgupnp/gupnp-context.c | 25 ++++++++-- + tests/gtest/test-bugs.c | 78 ++++++++++++++++++++++++++++++-- + 3 files changed, 99 insertions(+), 9 deletions(-) + +diff --git a/libgupnp/gupnp-context-private.h b/libgupnp/gupnp-context-private.h +index 5848d02..a8b4a75 100644 +--- a/libgupnp/gupnp-context-private.h ++++ b/libgupnp/gupnp-context-private.h +@@ -42,6 +42,11 @@ gupnp_context_ip_is_ours (GUPnPContext *context, const char *address); + G_GNUC_INTERNAL gboolean + gupnp_context_validate_host_header (GUPnPContext *context, const char *host); + ++gboolean ++validate_host_header (const char *host_header, ++ const char *host_ip, ++ guint context_port); ++ + G_END_DECLS + + #endif /* __GUPNP_CONTEXT_PRIVATE_H__ */ +diff --git a/libgupnp/gupnp-context.c b/libgupnp/gupnp-context.c +index 0381474..ec88b93 100644 +--- a/libgupnp/gupnp-context.c ++++ b/libgupnp/gupnp-context.c +@@ -1585,9 +1585,11 @@ out: + } + + gboolean +-gupnp_context_validate_host_header (GUPnPContext *context, +- const char *host_header) ++validate_host_header (const char *host_header, ++ const char *host_ip, ++ guint context_port) + { ++ + gboolean retval = FALSE; + // Be lazy and let GUri do the heavy lifting here, such as stripping the + // [] from v6 addresses, splitting of the port etc. +@@ -1610,8 +1612,11 @@ gupnp_context_validate_host_header (GUPnPContext *context, + goto out; + } + +- const char *host_ip = gssdp_client_get_host_ip (GSSDP_CLIENT (context)); +- gint context_port = gupnp_context_get_port (context); ++ // -1 means there was no :port; according to UDA this is allowed and ++ // defaults to 80, the HTTP port then ++ if (port == -1) { ++ port = 80; ++ } + + if (!g_str_equal (host, host_ip)) { + g_debug ("Mismatch between host header and host IP (%s, " +@@ -1631,6 +1636,18 @@ gupnp_context_validate_host_header (GUPnPContext *context, + + out: + g_clear_error (&error); ++ g_free (host); + g_free (uri_from_host); ++ + return retval; + } ++ ++gboolean ++gupnp_context_validate_host_header (GUPnPContext *context, ++ const char *host_header) ++{ ++ return validate_host_header ( ++ host_header, ++ gssdp_client_get_host_ip (GSSDP_CLIENT (context)), ++ gupnp_context_get_port (context)); ++} +diff --git a/tests/gtest/test-bugs.c b/tests/gtest/test-bugs.c +index 0ffac76..24ec4ba 100644 +--- a/tests/gtest/test-bugs.c ++++ b/tests/gtest/test-bugs.c +@@ -24,6 +24,7 @@ + #endif + + #include ++#include + + + struct _GUPnPServiceAction { +@@ -468,14 +469,81 @@ test_bgo_743233 (void) + g_object_unref (context); + } + ++static void ++test_ggo_24 (void) ++{ ++ // IPv4 ++ g_assert ( ++ validate_host_header ("127.0.0.1:4711", "127.0.0.1", 4711)); ++ ++ g_assert ( ++ validate_host_header ("127.0.0.1", "127.0.0.1", 80)); ++ ++ g_assert_false ( ++ validate_host_header ("example.com", "127.0.0.1", 4711)); ++ ++ g_assert_false ( ++ validate_host_header ("example.com:80", "127.0.0.1", 4711)); ++ ++ g_assert_false ( ++ validate_host_header ("example.com:4711", "127.0.0.1", 4711)); ++ ++ g_assert_false ( ++ validate_host_header ("192.168.1.2:4711", "127.0.0.1", 4711)); ++ ++ g_assert_false ( ++ validate_host_header ("[fe80::01]", "127.0.0.1", 4711)); ++ ++ // Link ids should not be parsed ++ g_assert_false ( ++ validate_host_header ("[fe80::01%1]", "127.0.0.1", 4711)); ++ ++ g_assert_false ( ++ validate_host_header ("[fe80::01%eth0]", "127.0.0.1", 4711)); ++ ++ // IPv6 ++ g_assert ( ++ validate_host_header ("[::1]:4711", "::1", 4711)); ++ ++ g_assert ( ++ validate_host_header ("[::1]", "::1", 80)); ++ ++ // Host header needs to be enclosed in [] even without port ++ g_assert_false ( ++ validate_host_header ("::1", "::1", 80)); ++ ++ g_assert_false ( ++ validate_host_header ("example.com", "::1", 4711)); ++ ++ g_assert_false ( ++ validate_host_header ("example.com:80", "::1", 4711)); ++ ++ g_assert_false ( ++ validate_host_header ("example.com:4711", "::1", 4711)); ++ ++ g_assert_false ( ++ validate_host_header ("192.168.1.2:4711", "::1", 4711)); ++ ++ g_assert_false ( ++ validate_host_header ("[fe80::01]", "::1", 4711)); ++ ++ // Link ids should not be parsed ++ g_assert_false ( ++ validate_host_header ("[fe80::01%1]", "fe80::acab", 4711)); ++ ++ g_assert_false ( ++ validate_host_header ("[fe80::01%eth0]", "fe80::acab", 4711)); ++} ++ + int + main (int argc, char *argv[]) { + g_test_init (&argc, &argv, NULL); +- g_test_add_func ("/bugs/696762", test_bgo_696762); +- g_test_add_func ("/bugs/678701", test_bgo_678701); +- g_test_add_func ("/bugs/690400", test_bgo_690400); +- g_test_add_func ("/bugs/722696", test_bgo_722696); +- g_test_add_func ("/bugs/743233", test_bgo_743233); ++ g_test_add_func ("/bugs/bgo/696762", test_bgo_696762); ++ g_test_add_func ("/bugs/bgo/678701", test_bgo_678701); ++ g_test_add_func ("/bugs/bgo/690400", test_bgo_690400); ++ g_test_add_func ("/bugs/bgo/722696", test_bgo_722696); ++ g_test_add_func ("/bugs/bgo/743233", test_bgo_743233); ++ g_test_add_func ("/bugs/ggo/24", test_ggo_24); + + return g_test_run (); + } +-- +2.31.1 + diff --git a/SOURCES/0001-context-Use-SoupURI-instead-of-GUri.patch b/SOURCES/0001-context-Use-SoupURI-instead-of-GUri.patch new file mode 100644 index 0000000..d5eaa0a --- /dev/null +++ b/SOURCES/0001-context-Use-SoupURI-instead-of-GUri.patch @@ -0,0 +1,63 @@ +From 8ed9a525a97091c2a416c82f05e8311837cc7600 Mon Sep 17 00:00:00 2001 +From: Jens Georg +Date: Wed, 2 Jun 2021 12:43:45 +0200 +Subject: [PATCH] context: Use SoupURI instead of GUri + +Do not bump the implicit requirement to GLib 2.66 for this version +--- + libgupnp/gupnp-context.c | 25 ++++++++++--------------- + 1 file changed, 10 insertions(+), 15 deletions(-) + +diff --git a/libgupnp/gupnp-context.c b/libgupnp/gupnp-context.c +index ec88b93..dda565e 100644 +--- a/libgupnp/gupnp-context.c ++++ b/libgupnp/gupnp-context.c +@@ -1595,26 +1595,22 @@ validate_host_header (const char *host_header, + // [] from v6 addresses, splitting of the port etc. + char *uri_from_host = g_strconcat ("http://", host_header, NULL); + +- char *host = NULL; ++ const char *host = NULL; + int port = 0; +- GError *error = NULL; +- +- g_uri_split_network (uri_from_host, +- G_URI_FLAGS_NONE, +- NULL, +- &host, +- &port, +- &error); + +- if (error != NULL) { +- g_debug ("Failed to parse HOST header from request: %s", +- error->message); ++ SoupURI *uri = soup_uri_new (uri_from_host); ++ if (uri == NULL) { ++ g_debug ("Failed to parse HOST header %s from request", ++ host_header); + goto out; + } ++ host = soup_uri_get_host (uri); ++ port = soup_uri_get_port (uri); ++ + + // -1 means there was no :port; according to UDA this is allowed and + // defaults to 80, the HTTP port then +- if (port == -1) { ++ if (soup_uri_uses_default_port (uri)) { + port = 80; + } + +@@ -1635,8 +1631,7 @@ validate_host_header (const char *host_header, + retval = g_str_equal (host, host_ip) && port == context_port; + + out: +- g_clear_error (&error); +- g_free (host); ++ g_clear_pointer (&uri, soup_uri_free); + g_free (uri_from_host); + + return retval; +-- +2.31.1 + diff --git a/SOURCES/0001-service-Validate-host-header.patch b/SOURCES/0001-service-Validate-host-header.patch new file mode 100644 index 0000000..1c06280 --- /dev/null +++ b/SOURCES/0001-service-Validate-host-header.patch @@ -0,0 +1,118 @@ +From 05e964d48322ff23a65c6026d656e4494ace6ff9 Mon Sep 17 00:00:00 2001 +From: Jens Georg +Date: Mon, 10 May 2021 10:34:36 +0200 +Subject: [PATCH] service: Validate host header + +Make sure that the host header matches the ip:port of the context. + +This is in line with UDA (Host header is required and must match the +location url) and DLNA 7.2.24.1 (All communication has to use ip +addresses and not names) + +Prevents DNS rebinding attacs against agains UPnP services +--- + libgupnp/gupnp-context-private.h | 3 ++ + libgupnp/gupnp-context.c | 51 ++++++++++++++++++++++++++++++++ + libgupnp/gupnp-service.c | 13 ++++++++ + 3 files changed, 67 insertions(+) + +diff --git a/libgupnp/gupnp-context-private.h b/libgupnp/gupnp-context-private.h +index 801d679..5848d02 100644 +--- a/libgupnp/gupnp-context-private.h ++++ b/libgupnp/gupnp-context-private.h +@@ -39,6 +39,9 @@ _gupnp_context_add_server_handler_with_data (GUPnPContext *context, + G_GNUC_INTERNAL gboolean + gupnp_context_ip_is_ours (GUPnPContext *context, const char *address); + ++G_GNUC_INTERNAL gboolean ++gupnp_context_validate_host_header (GUPnPContext *context, const char *host); ++ + G_END_DECLS + + #endif /* __GUPNP_CONTEXT_PRIVATE_H__ */ +diff --git a/libgupnp/gupnp-context.c b/libgupnp/gupnp-context.c +index 1732bf4..0381474 100644 +--- a/libgupnp/gupnp-context.c ++++ b/libgupnp/gupnp-context.c +@@ -1583,3 +1583,54 @@ out: + + return retval; + } ++ ++gboolean ++gupnp_context_validate_host_header (GUPnPContext *context, ++ const char *host_header) ++{ ++ gboolean retval = FALSE; ++ // Be lazy and let GUri do the heavy lifting here, such as stripping the ++ // [] from v6 addresses, splitting of the port etc. ++ char *uri_from_host = g_strconcat ("http://", host_header, NULL); ++ ++ char *host = NULL; ++ int port = 0; ++ GError *error = NULL; ++ ++ g_uri_split_network (uri_from_host, ++ G_URI_FLAGS_NONE, ++ NULL, ++ &host, ++ &port, ++ &error); ++ ++ if (error != NULL) { ++ g_debug ("Failed to parse HOST header from request: %s", ++ error->message); ++ goto out; ++ } ++ ++ const char *host_ip = gssdp_client_get_host_ip (GSSDP_CLIENT (context)); ++ gint context_port = gupnp_context_get_port (context); ++ ++ if (!g_str_equal (host, host_ip)) { ++ g_debug ("Mismatch between host header and host IP (%s, " ++ "expected: %s)", ++ host, ++ host_ip); ++ } ++ ++ if (port != context_port) { ++ g_debug ("Mismatch between host header and host port (%d, " ++ "expected %d)", ++ port, ++ context_port); ++ } ++ ++ retval = g_str_equal (host, host_ip) && port == context_port; ++ ++out: ++ g_clear_error (&error); ++ g_free (uri_from_host); ++ return retval; ++} +diff --git a/libgupnp/gupnp-service.c b/libgupnp/gupnp-service.c +index 4235cab..50765f0 100644 +--- a/libgupnp/gupnp-service.c ++++ b/libgupnp/gupnp-service.c +@@ -949,6 +949,19 @@ control_server_handler (SoupServer *server, + + context = gupnp_service_info_get_context (GUPNP_SERVICE_INFO (service)); + ++ const char *host_header = ++ soup_message_headers_get_one (msg->request_headers, "Host"); ++ ++ if (!gupnp_context_validate_host_header (context, host_header)) { ++ g_warning ("Host header mismatch, expected %s:%d, got %s", ++ gssdp_client_get_host_ip (GSSDP_CLIENT (context)), ++ gupnp_context_get_port (context), ++ host_header); ++ ++ soup_message_set_status (msg, SOUP_STATUS_PRECONDITION_FAILED); ++ return; ++ } ++ + /* Get action name */ + soap_action = soup_message_headers_get_one (msg->request_headers, + "SOAPAction"); +-- +2.31.1 + diff --git a/SPECS/gupnp.spec b/SPECS/gupnp.spec new file mode 100644 index 0000000..44fe08b --- /dev/null +++ b/SPECS/gupnp.spec @@ -0,0 +1,459 @@ +Name: gupnp +Version: 1.0.6 +Release: 2%{?dist} +Summary: A framework for creating UPnP devices & control points + +License: LGPLv2+ +URL: http://www.gupnp.org/ +Source0: http://download.gnome.org/sources/%{name}/1.0/%{name}-%{version}.tar.xz + +BuildRequires: gssdp-devel >= 1.0.5 +BuildRequires: gtk-doc +BuildRequires: gobject-introspection-devel >= 1.36 +BuildRequires: libsoup-devel +BuildRequires: libxml2-devel +BuildRequires: libuuid-devel +BuildRequires: vala + +Requires: dbus + +# https://gitlab.gnome.org/GNOME/gupnp/-/issues/24 +Patch0: 0001-service-Validate-host-header.patch +Patch1: 0001-Tests-Add-test-for-host-header-validation.patch +Patch2: 0001-context-Use-SoupURI-instead-of-GUri.patch + +%description +GUPnP is an object-oriented open source framework for creating UPnP +devices and control points, written in C using GObject and libsoup. +The GUPnP API is intended to be easy to use, efficient and flexible. + +%package devel +Summary: Development package for gupnp +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description devel +Files for development with %{name}. + +%package docs +Summary: Documentation files for %{name} +Requires: %{name} = %{version}-%{release} +BuildArch: noarch + +%description docs +This package contains developer documentation for %{name}. + +%prep +%setup -q +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 + +# Use Python 3 +sed -i '1s|^#! /usr/bin/env python$|#!/usr/bin/python3|' tools/gupnp-binding-tool + +%build +%configure --disable-static --enable-debug=info --with-context-manager=network-manager +make %{?_smp_mflags} V=1 + +%install +%make_install + +#Remove libtool archives. +find %{buildroot} -name '*.la' -delete + +# Disable the tests as they rely on IPv6 being available +# %check +# make check %{?_smp_mflags} V=1 || cat tests/gtest/test-suite.log + +%post -p /sbin/ldconfig + +%postun -p /sbin/ldconfig + +%files +%license COPYING +%doc AUTHORS README +%{_libdir}/libgupnp-1.0.so.* +%{_libdir}/girepository-1.0/GUPnP-1.0.typelib + +%files devel +%{_bindir}/gupnp-binding-tool +%{_libdir}/pkgconfig/gupnp-1.0.pc +%{_libdir}/libgupnp-1.0.so +%{_includedir}/gupnp-1.0 +%{_datadir}/gir-1.0/GUPnP-1.0.gir +%{_datadir}/vala/vapi/%{name}* + +%files docs +%doc %{_datadir}/gtk-doc/html/%{name} + +%changelog +* Wed Jun 02 2021 Bastien Nocera - 1.0.6-2 ++ gupnp-1.0.6-2 +- Fix DNS rebind issue +- Resolves: #1964710 + +* Wed Sep 30 2020 Bastien Nocera - 1.0.6-1 ++ gupnp-1.0.6-1 +- Update to 1.0.6 +- Fix SUBSCRIBE misbehaviour +- Resolves: #1846589 + +* Tue Sep 25 2018 Bastien Nocera - 1.0.3-2 ++ gupnp-1.0.3-2 +- Don't use -O0 optimisation, it disables ASLR +- Resolves: #1611077 + +* Tue Jul 31 2018 Bastien Nocera - 1.0.3-1 ++ gupnp-1.0.3-1 +- Update to 1.0.3 + +* Thu Jun 07 2018 Bastien Nocera - 1.0.2-6 ++ gupnp-1.0.2-6 +- Fix Python3 substitution, and make it earlier + +* Thu Feb 15 2018 Bastien Nocera - 1.0.2-5 ++ gupnp-1.0.2-5 +- Remove unused NetworkManager-devel BR + +* Wed Feb 07 2018 Fedora Release Engineering - 1.0.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Wed Aug 02 2017 Fedora Release Engineering - 1.0.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 1.0.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Tue Mar 21 2017 Kalev Lember - 1.0.2-1 +- Update to 1.0.2 + +* Fri Feb 10 2017 Fedora Release Engineering - 1.0.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Sun Oct 16 2016 Kalev Lember - 1.0.1-1 +- Update to 1.0.1 + +* Thu Sep 22 2016 Kalev Lember - 1.0.0-2 +- BR vala instead of obsolete vala-tools subpackage + +* Mon Sep 19 2016 Kalev Lember - 1.0.0-1 +- Update to 1.0.0 +- Don't set group tags +- Use make_install macro + +* Thu Aug 18 2016 Kalev Lember - 0.99.0-1 +- Update to 0.99.0 +- Drop manual requires that are automatically handled by pkgconfig dep gen +- Tighten inter package dependencies with the _isa macro + +* Wed Jun 22 2016 Richard Hughes - 0.20.18-1 +- Update to 0.20.18 + +* Tue Apr 26 2016 Peter Robinson 0.20.17-1 +- 0.20.17 release +- http://ftp.gnome.org/pub/GNOME/sources/gupnp/0.20/gupnp-0.20.17.news + +* Thu Feb 11 2016 Peter Robinson 0.20.16-1 +- 0.20.16 release +- http://ftp.gnome.org/pub/GNOME/sources/gupnp/0.20/gupnp-0.20.16.news + +* Wed Feb 03 2016 Fedora Release Engineering - 0.20.15-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Mon Jan 4 2016 Peter Robinson 0.20.15-1 +- 0.20.15 release +- http://ftp.gnome.org/pub/GNOME/sources/gupnp/0.20/gupnp-0.20.15.news + +* Mon Dec 14 2015 Debarshi Ray - 0.20.14-4 +- GUPnPNetworkManager is never deallocated due to internal circular reference + (GNOME #741257) + +* Fri Jul 03 2015 Kalev Lember - 0.20.14-3 +- Switch to Python 3 (#1192093) +- Move gupnp-binding-tool to -devel subpackage + +* Wed Jun 17 2015 Fedora Release Engineering - 0.20.14-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Sun May 10 2015 Kalev Lember - 0.20.14-1 +- Update to 0.20.14 +- Use license macro for the COPYING file + +* Tue Jan 6 2015 Peter Robinson 0.20.13-1 +- 0.20.13 release +- http://ftp.gnome.org/pub/GNOME/sources/gupnp/0.20/gupnp-0.20.13.news + +* Sat Oct 11 2014 Dan HorĂ¡k - 0.20.12-6 +- Disable tests, they fail with libsoup-2.48 (gnome#738365) + +* Sat Aug 16 2014 Fedora Release Engineering - 0.20.12-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Tue Jul 22 2014 Kalev Lember - 0.20.12-4 +- Rebuilt for gobject-introspection 1.41.4 + +* Fri Jul 11 2014 Peter Robinson 0.20.12-3 +- Enable check + +* Sat Jun 07 2014 Fedora Release Engineering - 0.20.12-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Sat May 31 2014 Peter Robinson 0.20.12-1 +- 0.20.12 release +- http://ftp.gnome.org/pub/GNOME/sources/gupnp/0.20/gupnp-0.20.12.news +- Re-add vala bindings to devel (RHBZ 1093204) + +* Tue May 6 2014 Peter Robinson 0.20.11-1 +- 0.20.11 release +- http://ftp.gnome.org/pub/GNOME/sources/gupnp/0.20/gupnp-0.20.11.news + +* Tue Feb 4 2014 Peter Robinson 0.20.10-1 +- 0.20.10 release +- http://ftp.gnome.org/pub/GNOME/sources/gupnp/0.20/gupnp-0.20.10.news + +* Sun Dec 15 2013 Peter Robinson 0.20.9-1 +- 0.20.9 release +- http://ftp.gnome.org/pub/GNOME/sources/gupnp/0.20/gupnp-0.20.9.news + +* Sun Nov 3 2013 Peter Robinson 0.20.8-1 +- 0.20.8 release +- http://ftp.gnome.org/pub/GNOME/sources/gupnp/0.20/gupnp-0.20.8.news + +* Wed Oct 16 2013 Peter Robinson 0.20.7-1 +- 0.20.7 release +- http://ftp.gnome.org/pub/GNOME/sources/gupnp/0.20/gupnp-0.20.7.news + +* Mon Sep 9 2013 Peter Robinson 0.20.6-1 +- 0.20.6 release +- http://ftp.gnome.org/pub/GNOME/sources/gupnp/0.20/gupnp-0.20.6.news + +* Wed Aug 21 2013 Peter Robinson 0.20.5-1 +- 0.20.5 release +- http://ftp.gnome.org/pub/GNOME/sources/gupnp/0.20/gupnp-0.20.5.news + +* Tue Jul 30 2013 Peter Robinson 0.20.4-1 +- 0.20.4 release +- http://ftp.gnome.org/pub/GNOME/sources/gupnp/0.20/gupnp-0.20.4.news + +* Thu May 30 2013 Peter Robinson 0.20.3-1 +- 0.20.3 release +- http://ftp.gnome.org/pub/GNOME/sources/gupnp/0.20/gupnp-0.20.3.news + +* Sat Apr 13 2013 Peter Robinson 0.20.2-1 +- 0.20.2 release +- http://ftp.gnome.org/pub/GNOME/sources/gupnp/0.20/gupnp-0.20.2.news + +* Tue Mar 5 2013 Peter Robinson 0.20.1-1 +- 0.20.1 release +- http://ftp.gnome.org/pub/GNOME/sources/gupnp/0.20/gupnp-0.20.1.news + +* Thu Feb 21 2013 Peter Robinson 0.20.0-2 +- Obsolete gupnp-vala + +* Thu Feb 21 2013 Peter Robinson 0.20.0-2 +- bump + +* Thu Feb 21 2013 Peter Robinson 0.20.0-1 +- 0.20.0 release +- http://ftp.gnome.org/pub/GNOME/sources/gupnp/0.20/gupnp-0.20.0.news + +* Thu Feb 14 2013 Fedora Release Engineering - 0.19.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Sun Jan 13 2013 Peter Robinson 0.19.4-1 +- 0.19.4 release +- http://ftp.gnome.org/pub/GNOME/sources/gupnp/0.19/gupnp-0.19.4.news + +* Thu Dec 6 2012 Peter Robinson 0.19.3-1 +- 0.19.3 release +- http://ftp.gnome.org/pub/GNOME/sources/gupnp/0.19/gupnp-0.19.3.news + +* Sat Dec 1 2012 Peter Robinson 0.19.2-1 +- 0.19.2 release +- http://ftp.gnome.org/pub/GNOME/sources/gupnp/0.19/gupnp-0.19.2.news + +* Mon Oct 29 2012 Peter Robinson 0.19.1-1 +- 0.19.1 release +- http://ftp.gnome.org/pub/GNOME/sources/gupnp/0.19/gupnp-0.19.1.news + +* Sun Oct 7 2012 Peter Robinson - 0.19.0-1 +- 0.19.0 release +- http://ftp.gnome.org/pub/GNOME/sources/gupnp/0.19/gupnp-0.19.0.news + +* Sun Aug 19 2012 Peter Robinson - 0.18.4-1 +- 0.18.4 release +- http://ftp.gnome.org/pub/GNOME/sources/gupnp/0.18/gupnp-0.18.4.news + +* Mon Aug 13 2012 Peter Robinson - 0.18.3-3 +- Use NetworkManager for connectivity detection + +* Thu Jul 19 2012 Fedora Release Engineering - 0.18.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Sat May 5 2012 Peter Robinson - 0.18.3-1 +- 0.18.3 release +- http://ftp.gnome.org/pub/GNOME/sources/gupnp/0.18/gupnp-0.18.3.news + +* Thu Apr 26 2012 Zeeshan Ali - 0.18.2-2 +- Remove bogus dependency on libgdbus-devel. + +* Sun Mar 18 2012 Peter Robinson - 0.18.2-1 +- 0.18.2 release +- http://ftp.gnome.org/pub/GNOME/sources/gupnp/0.18/gupnp-0.18.2.news + +* Fri Jan 13 2012 Fedora Release Engineering - 0.18.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Sat Dec 10 2011 Peter Robinson - 0.18.1-1 +- 0.18.1 release +- http://ftp.gnome.org/pub/GNOME/sources/gupnp/0.18/gupnp-0.18.1.news + +* Mon Sep 5 2011 Zeeshan Ali - 0.18.0-2 +- Push a new release to build against latest gssdp. + +* Fri Sep 2 2011 Zeeshan Ali - 0.18.0-1 +- 0.18.0 release +- http://ftp.gnome.org/pub/GNOME/sources/gupnp/0.18/gupnp-0.18.0.news + +* Fri Aug 5 2011 Peter Robinson - 0.17.2-1 +- 0.17.2 release +- http://ftp.gnome.org/pub/GNOME/sources/gupnp/0.17/gupnp-0.17.2.news + +* Sun Jul 17 2011 Peter Robinson - 0.17.1-1 +- 0.17.1 release +- http://ftp.gnome.org/pub/GNOME/sources/gupnp/0.17/gupnp-0.17.1.news + +* Thu Jun 16 2011 Peter Robinson - 0.17.0-1 +- 0.17.0 release + +* Sun May 1 2011 Peter Robinson - 0.16.1-1 +- 0.16.1 stable release + +* Sat Apr 9 2011 Peter Robinson - 0.16.0-1 +- 0.16.0 stable release + +* Wed Feb 09 2011 Fedora Release Engineering - 0.15.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Sat Jan 15 2011 Peter Robinson 0.15.1-1 +- Update to 0.15.1 + +* Tue Nov 30 2010 Peter Robinson 0.15.0-1 +- Update to 0.15.0 + +* Wed Sep 29 2010 jkeating - 0.14.0-3 +- Rebuilt for gcc bug 634757 + +* Wed Sep 22 2010 Matthias Clasen 0.14.0-2 +- Rebuild against newer gobject-introspection + +* Fri Sep 17 2010 Peter Robinson 0.14.0-1 +- Update to 0.14.0 + +* Tue Aug 17 2010 Peter Robinson 0.13.5-2 +- Update source URL + +* Sat Aug 14 2010 Peter Robinson 0.13.5-1 +- Update to 0.13.5 + +* Thu Jul 15 2010 Colin Walters - 0.13.4-4 +- Rebuild with new gobject-introspection + +* Mon Jun 21 2010 Peter Robinson 0.13.4-2 +- Add patch to fix build + +* Mon Jun 21 2010 Peter Robinson 0.13.4-1 +- Update to 0.13.4 + +* Fri Apr 9 2010 Peter Robinson 0.13.3-4 +- Once more with feeling! + +* Fri Apr 9 2010 Peter Robinson 0.13.3-3 +- add back missing line to spec + +* Fri Apr 9 2010 Peter Robinson 0.13.3-2 +- bump build + +* Fri Apr 9 2010 Peter Robinson 0.13.3-1 +- Update to 0.13.3 + +* Mon Mar 1 2010 Peter Robinson 0.13.2-2 +- Add patch to fix DSO linking. Fixes bug 564855 + +* Fri Dec 4 2009 Peter Robinson 0.13.2-1 +- Update to 0.13.2 + +* Wed Oct 7 2009 Peter Robinson 0.13.1-1 +- Update to 0.13.1 + +* Thu Sep 17 2009 Bastien Nocera 0.13.0-1 +- Update to 0.13.0 + +* Mon Aug 31 2009 Peter Robinson 0.12.8-4 +- some spec file cleanups, depend on libuuid instead of e2fsprogs-devel + +* Fri Jul 24 2009 Fedora Release Engineering - 0.12.8-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Wed Jul 1 2009 Peter Robinson 0.12.8-2 +- Rebuild with new libuuid build req + +* Wed Jun 3 2009 Peter Robinson 0.12.8-1 +- New upstream release + +* Mon Apr 27 2009 Peter Robinson 0.12.7-1 +- New upstream release + +* Wed Mar 4 2009 Peter Robinson 0.12.6-4 +- Move docs to noarch sub package + +* Mon Mar 2 2009 Peter Robinson 0.12.6-3 +- Add some extra -devel Requires packages + +* Tue Feb 24 2009 Fedora Release Engineering - 0.12.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Mon Feb 23 2009 Peter Robinson 0.12.6-1 +- New upstream release + +* Wed Jan 14 2009 Peter Robinson 0.12.5-1 +- New upstream release + +* Thu Dec 18 2008 Peter Robinson 0.12.4-3 +- Add gtk-doc build req + +* Sat Nov 22 2008 Peter Robinson 0.12.4-2 +- Fix summary + +* Mon Nov 17 2008 Peter Robinson 0.12.4-1 +- New upstream release + +* Mon Oct 27 2008 Peter Robinson 0.12.3-1 +- New upstream release + +* Mon Oct 20 2008 Colin Walters 0.12.2-2 +- devel package requires gssdp-devel + +* Sun Aug 31 2008 Peter Robinson 0.12.2-1 +- New upstream release + +* Thu Aug 28 2008 Peter Robinson 0.12.1-7 +- Yet again. Interesting it builds fine in mock and not koji + +* Thu Aug 28 2008 Peter Robinson 0.12.1-6 +- Once more with feeling + +* Thu Aug 28 2008 Peter Robinson 0.12.1-5 +- Second go + +* Thu Aug 28 2008 Peter Robinson 0.12.1-4 +- Fix build on rawhide + +* Wed Aug 13 2008 Peter Robinson 0.12.1-3 +- Fix changelog entries + +* Wed Aug 13 2008 Peter Robinson 0.12.1-2 +- Fix a compile issue on rawhide + +* Mon Jun 16 2008 Peter Robinson 0.12.1-1 +- Initial release