Compare commits

...

No commits in common. 'c9' and 'cs10' have entirely different histories.
c9 ... cs10

2
.gitignore vendored

@ -1 +1 @@
SOURCES/rest-0.8.1.tar.xz SOURCES/rest-0.9.1.tar.xz

@ -1 +1 @@
602c81cfd088b3a06311d01c01954ae67c47b95d SOURCES/rest-0.8.1.tar.xz 0f7d2d43d43af4f7b181153aaefdf803afbfd82b SOURCES/rest-0.9.1.tar.xz

@ -0,0 +1,40 @@
From fbad64abe28a96f591a30e3a5d3189c10172a414 Mon Sep 17 00:00:00 2001
From: Adam Williamson <awilliam@redhat.com>
Date: Tue, 30 Aug 2022 10:03:57 -0700
Subject: [PATCH 1/2] rest_proxy_call_sync: bail out if no payload
goa-daemon is crashing on suspend/resume with a traceback that
points here: it calls rest_proxy_call_sync, that calls
_rest_proxy_send_message, assumes it gets a `payload` back,
and calls `finish_call` with it. However, it's not actually
guaranteed that `_rest_proxy_send_message` will return a payload
(a `GBytes`). There are three ways it can return `NULL` instead:
if it's passed a wrong proxy or message, or - when built against
libsoup3 - if there is an error sending the message (it passes
through the return value of `soup_session_send_and_read`, and
that's documented to be `NULL` on error).
If `payload` comes back `NULL`, let's just return `FALSE`, like
we do if there's a problem with the call or message.
Signed-off-by: Adam Williamson <awilliam@redhat.com>
---
rest/rest-proxy-call.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/rest/rest-proxy-call.c b/rest/rest-proxy-call.c
index 851b397..07b8b49 100644
--- a/rest/rest-proxy-call.c
+++ b/rest/rest-proxy-call.c
@@ -1428,6 +1428,8 @@ rest_proxy_call_sync (RestProxyCall *call,
return FALSE;
payload = _rest_proxy_send_message (priv->proxy, message, priv->cancellable, error_out);
+ if (!payload)
+ return FALSE;
ret = finish_call (call, message, payload, error_out);
--
2.37.1

@ -0,0 +1,52 @@
From 49c2d0ac00b959ce53cc00ca4e7758c21085722f Mon Sep 17 00:00:00 2001
From: Adam Williamson <awilliam@redhat.com>
Date: Tue, 30 Aug 2022 10:59:01 -0700
Subject: [PATCH 2/2] Handle some potential problems in parsing oauth2 access
tokens
It's possible for `_rest_proxy_send_message` to return `NULL`,
which would mean the `payload` here would be `NULL`. If so,
we're not going to be able to do anything, so we should just
bail out.
It's also possible for `json_parser_load_from_data` to return
`FALSE` without setting an error. The most obvious way would be
if `data` was `NULL`, which the bailout avoids, but it could
also happen if we pass an invalid parser somehow. Let's just
handle that too, to be safe.
Signed-off-by: Adam Williamson <awilliam@redhat.com>
---
rest/rest-oauth2-proxy.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/rest/rest-oauth2-proxy.c b/rest/rest-oauth2-proxy.c
index 9511f97..a715b2b 100644
--- a/rest/rest-oauth2-proxy.c
+++ b/rest/rest-oauth2-proxy.c
@@ -68,18 +68,21 @@ rest_oauth2_proxy_parse_access_token (RestOAuth2Proxy *self,
gsize size;
gint expires_in;
gint created_at;
+ gboolean ret;
g_return_if_fail (REST_IS_OAUTH2_PROXY (self));
+ g_return_if_fail (payload);
data = g_bytes_get_data (payload, &size);
parser = json_parser_new ();
- json_parser_load_from_data (parser, data, size, &error);
+ ret = json_parser_load_from_data (parser, data, size, &error);
if (error != NULL)
{
g_task_return_error (task, error);
return;
}
+ g_return_if_fail (ret);
root = json_parser_get_root (parser);
root_object = json_node_get_object (root);
--
2.37.1

@ -1,218 +0,0 @@
From a09ea6bd74d6234be8456e7039403bc1c1d078bd Mon Sep 17 00:00:00 2001
From: Christophe Fergeau <cfergeau@redhat.com>
Date: Mon, 20 Jun 2016 12:05:48 +0200
Subject: [PATCH 1/4] xml-node: Use GString in rest_xml_node_print()
The current code is using xml = g_strconcat (xml, ...) which is causing
some leaks as g_strconcat returns a newly allocated string. Using
GString avoids this issue without constantly freeing the intermediate
strings.
This fixes multiple leaks like:
==16611== 18 bytes in 1 blocks are definitely lost in loss record 124 of 301
==16611== at 0x4C2BBAD: malloc (vg_replace_malloc.c:299)
==16611== by 0x5F5CE58: g_malloc (gmem.c:94)
==16611== by 0x5F75B8E: g_strconcat (gstrfuncs.c:585)
==16611== by 0x4E450CF: rest_xml_node_print (rest-xml-node.c:287)
==16611== by 0x4E451DA: rest_xml_node_print (rest-xml-node.c:305)
==16611== by 0x4E450F8: rest_xml_node_print (rest-xml-node.c:292)
==16611== by 0x4009A0: main (xml.c:40)
---
rest/rest-xml-node.c | 21 ++++++++++++---------
1 file changed, 12 insertions(+), 9 deletions(-)
diff --git a/rest/rest-xml-node.c b/rest/rest-xml-node.c
index 57a942667f06..a8156dbbd432 100644
--- a/rest/rest-xml-node.c
+++ b/rest/rest-xml-node.c
@@ -283,38 +283,41 @@ rest_xml_node_print (RestXmlNode *node)
{
GHashTableIter iter;
gpointer key, value;
- char *xml = g_strconcat ("<", node->name, NULL);
+ GString *xml = g_string_new (NULL);
RestXmlNode *n;
+ g_string_append (xml, "<");
+ g_string_append (xml, node->name);
+
g_hash_table_iter_init (&iter, node->attrs);
while (g_hash_table_iter_next (&iter, &key, &value))
- xml = g_strconcat (xml, " ", key, "=\'", value, "\'", NULL);
+ g_string_append_printf (xml, " %s =\'%s\'", (char *)key, (char *)value);
- xml = g_strconcat (xml, ">", NULL);
+ g_string_append (xml, ">");
g_hash_table_iter_init (&iter, node->children);
while (g_hash_table_iter_next (&iter, &key, &value))
{
char *child = rest_xml_node_print ((RestXmlNode *) value);
- xml = g_strconcat (xml, child, NULL);
+ g_string_append (xml, child);
g_free (child);
}
if (node->content)
- xml = g_strconcat (xml, node->content, "</", node->name, ">", NULL);
- else
- xml = g_strconcat (xml, "</", node->name, ">", NULL);
+ g_string_append (xml, node->content);
+
+ g_string_append_printf (xml, "</%s>", node->name);
for (n = node->next; n; n = n->next)
{
char *sibling = rest_xml_node_print (n);
- xml = g_strconcat (xml, sibling, NULL);
+ g_string_append (xml, sibling);
g_free (sibling);
}
- return xml;
+ return g_string_free (xml, FALSE);
}
/**
--
2.14.2
From a34d02947c4f102e6d16b9d328941a4b2946c8e8 Mon Sep 17 00:00:00 2001
From: Debarshi Ray <debarshir@gnome.org>
Date: Fri, 13 Oct 2017 18:53:39 +0200
Subject: [PATCH 2/4] xml-node: Remove stray blank space
This had broken tests/xml.c.
Fallout from 61a7b231bd8b9d1b8d02dca120389e79d38b428d
https://bugzilla.gnome.org/show_bug.cgi?id=788960
---
rest/rest-xml-node.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/rest/rest-xml-node.c b/rest/rest-xml-node.c
index a8156dbbd432..d3a7c995affd 100644
--- a/rest/rest-xml-node.c
+++ b/rest/rest-xml-node.c
@@ -291,7 +291,7 @@ rest_xml_node_print (RestXmlNode *node)
g_hash_table_iter_init (&iter, node->attrs);
while (g_hash_table_iter_next (&iter, &key, &value))
- g_string_append_printf (xml, " %s =\'%s\'", (char *)key, (char *)value);
+ g_string_append_printf (xml, " %s=\'%s\'", (char *)key, (char *)value);
g_string_append (xml, ">");
--
2.14.2
From f184db2bff0618b99c4de3316082fe80439f124c Mon Sep 17 00:00:00 2001
From: Debarshi Ray <debarshir@gnome.org>
Date: Fri, 13 Oct 2017 19:14:16 +0200
Subject: [PATCH 3/4] xml-node: Define the order in which attributes & children
are printed
The order in which GHashTable returns its key-value pairs is undefined.
Therefore the output of rest_xml_node_print can change based on the
GHashTable implementation. While not strictly necessary, it would be
nice to avoid that. Having a stable order, even if it is not
documented and depends on the current RestXmlNode code, is handy for
testing.
This was the main reason behind the tests/xml.c breakage.
https://bugzilla.gnome.org/show_bug.cgi?id=788960
---
rest/rest-xml-node.c | 23 ++++++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)
diff --git a/rest/rest-xml-node.c b/rest/rest-xml-node.c
index d3a7c995affd..973ebcf6c3fa 100644
--- a/rest/rest-xml-node.c
+++ b/rest/rest-xml-node.c
@@ -283,6 +283,9 @@ rest_xml_node_print (RestXmlNode *node)
{
GHashTableIter iter;
gpointer key, value;
+ GList *attrs = NULL;
+ GList *children = NULL;
+ GList *l;
GString *xml = g_string_new (NULL);
RestXmlNode *n;
@@ -291,13 +294,29 @@ rest_xml_node_print (RestXmlNode *node)
g_hash_table_iter_init (&iter, node->attrs);
while (g_hash_table_iter_next (&iter, &key, &value))
- g_string_append_printf (xml, " %s=\'%s\'", (char *)key, (char *)value);
+ {
+ char *attr = g_strdup_printf ("%s=\'%s\'", (char *)key, (char *)value);
+ attrs = g_list_prepend (attrs, attr);
+ }
+
+ attrs = g_list_sort (attrs, (GCompareFunc) g_strcmp0);
+ for (l = attrs; l; l = l->next)
+ {
+ const char *attr = (const char *) l->data;
+ g_string_append_printf (xml, " %s", attr);
+ }
g_string_append (xml, ">");
g_hash_table_iter_init (&iter, node->children);
while (g_hash_table_iter_next (&iter, &key, &value))
+ children = g_list_prepend (children, key);
+
+ children = g_list_sort (children, (GCompareFunc) g_strcmp0);
+ for (l = children; l; l = l->next)
{
+ const char *name = (const char *) l->data;
+ RestXmlNode *value = (RestXmlNode *) g_hash_table_lookup (node->children, name);
char *child = rest_xml_node_print ((RestXmlNode *) value);
g_string_append (xml, child);
@@ -317,6 +336,8 @@ rest_xml_node_print (RestXmlNode *node)
g_free (sibling);
}
+ g_list_free_full (attrs, g_free);
+ g_list_free (children);
return g_string_free (xml, FALSE);
}
--
2.14.2
From e5ee6ef751ee5a38d7b9fadcd631cf6ecec7b240 Mon Sep 17 00:00:00 2001
From: Debarshi Ray <debarshir@gnome.org>
Date: Fri, 13 Oct 2017 19:16:55 +0200
Subject: [PATCH 4/4] tests: Re-enable the XML test
This reverts commit 2d1dbfe7073b1e153ff881426b40a9a517fb796b
https://bugzilla.gnome.org/show_bug.cgi?id=788960
---
tests/Makefile.am | 2 --
1 file changed, 2 deletions(-)
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 5d77f9cf5445..5ffdd4634e9a 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -1,6 +1,4 @@
TESTS = proxy proxy-continuous threaded oauth oauth-async oauth2 flickr lastfm xml custom-serialize
-# TODO: fix this test case
-XFAIL_TESTS = xml
AM_CPPFLAGS = $(SOUP_CFLAGS) -I$(top_srcdir) $(GCOV_CFLAGS)
AM_LDFLAGS = $(SOUP_LIBS) $(GCOV_LDFLAGS) \
--
2.14.2

@ -1,24 +1,28 @@
Name: rest Name: rest
Version: 0.8.1 Version: 0.9.1
Release: 11%{?dist} Release: 11%{?dist}
Summary: A library for access to RESTful web services Summary: A library for access to RESTful web services
License: LGPLv2 License: LGPL-2.1-only
URL: http://www.gnome.org URL: https://gitlab.gnome.org/GNOME/librest
Source0: http://download.gnome.org/sources/%{name}/0.8/%{name}-%{version}.tar.xz Source0: https://download.gnome.org/sources/%{name}/0.9/%{name}-%{version}.tar.xz
# https://bugzilla.redhat.com/show_bug.cgi?id=1445700 # Fix some crash paths exposed by the libsoup3 port, including a
Patch0: rest-0.8.0-fix-the-XML-test.patch # crash on suspend/resume with Google accounts:
# https://gitlab.gnome.org/GNOME/librest/-/merge_requests/30
BuildRequires: make Patch0: 0001-rest_proxy_call_sync-bail-out-if-no-payload.patch
BuildRequires: glib2-devel Patch1: 0002-Handle-some-potential-problems-in-parsing-oauth2-acc.patch
BuildRequires: gobject-introspection-devel
BuildRequires: libsoup-devel BuildRequires: meson
BuildRequires: libxml2-devel BuildRequires: pkgconfig(glib-2.0)
BuildRequires: gtk-doc BuildRequires: pkgconfig(gio-2.0)
BuildRequires: autoconf BuildRequires: pkgconfig(gobject-introspection-1.0)
BuildRequires: automake BuildRequires: pkgconfig(libsoup-3.0)
BuildRequires: libtool BuildRequires: pkgconfig(libxml-2.0)
BuildRequires: pkgconfig(json-glib-1.0)
BuildRequires: pkgconfig(libadwaita-1)
BuildRequires: pkgconfig(gtksourceview-5)
BuildRequires: pkgconfig(gi-docgen)
%description %description
This library was designed to make it easier to access web services that This library was designed to make it easier to access web services that
@ -36,50 +40,88 @@ Requires: %{name}%{?_isa} = %{version}-%{release}
%description devel %description devel
Files for development with %{name}. Files for development with %{name}.
%package demo
Summary: Demo application for %{name}
Requires: %{name}%{?_isa} = %{version}-%{release}
%description demo
Demo application for %{name}.
%prep %prep
%setup -q %autosetup -p1 -S gendiff
%patch0 -p1
%build %build
autoreconf -vif %meson
%configure --disable-static --enable-gtk-doc --enable-introspection=yes %meson_build
make %{?_smp_mflags} V=1
%install %install
make install DESTDIR=%{buildroot} INSTALL='install -p' %meson_install
#Remove libtool archives.
find %{buildroot} -type f -name "*.la" -delete
%ldconfig_scriptlets
%files %files
%license COPYING %license COPYING
%doc AUTHORS README %doc AUTHORS README.md
%{_libdir}/librest-0.7.so.0 %{_libdir}/librest-1.0.so.0*
%{_libdir}/librest-0.7.so.0.0.0 %{_libdir}/librest-extras-1.0.so.0*
%{_libdir}/librest-extras-0.7.so.0 %{_libdir}/girepository-1.0/Rest-1.0.typelib
%{_libdir}/librest-extras-0.7.so.0.0.0 %{_libdir}/girepository-1.0/RestExtras-1.0.typelib
%{_libdir}/girepository-1.0/Rest-0.7.typelib
%{_libdir}/girepository-1.0/RestExtras-0.7.typelib
%files devel %files devel
%{_includedir}/rest-0.7 %{_includedir}/rest-1.0/
%{_libdir}/pkgconfig/rest* %{_libdir}/pkgconfig/rest-1.0.pc
%{_libdir}/librest-0.7.so %{_libdir}/pkgconfig/rest-extras-1.0.pc
%{_libdir}/librest-extras-0.7.so %{_libdir}/librest-1.0.so
%{_datadir}/gtk-doc/html/%{name}*0.7 %{_libdir}/librest-extras-1.0.so
%{_datadir}/gir-1.0/Rest-0.7.gir %{_datadir}/doc/librest-1.0/
%{_datadir}/gir-1.0/RestExtras-0.7.gir %{_datadir}/gir-1.0/Rest-1.0.gir
%{_datadir}/gir-1.0/RestExtras-1.0.gir
%files demo
%{_bindir}/librest-demo
%{_datadir}/applications/org.gnome.RestDemo.desktop
%changelog %changelog
* Tue Aug 10 2021 Mohan Boddu <mboddu@redhat.com> - 0.8.1-11 * Tue Oct 29 2024 Troy Dawson <tdawson@redhat.com> - 0.9.1-11
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags - Bump release for October 2024 mass rebuild:
Related: rhbz#1991688 Resolves: RHEL-64018
* Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 0.9.1-10
- Bump release for June 2024 mass rebuild
* Fri Jan 26 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.1-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Mon Jan 22 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.1-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Fri Jul 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.1-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Fri Jan 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.1-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Tue Aug 30 2022 Adam Williamson <awilliam@redhat.com> - 0.9.1-5
- Backport MR #30 to fix some crashes in the libsoup3 port
* Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Tue Jul 19 2022 Kalev Lember <klember@redhat.com> - 0.9.1-3
- Simplify files list a bit
- Split librest-demo out to a rest-demo subpackage
- Update source URLs
* Mon Jul 18 2022 Milan Crha <mcrha@redhat.com> - 0.9.1-1
- Update to 0.9.1
- Build against libsoup3
* Fri Jan 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0.8.1-12
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Sun Jan 16 2022 Peter Robinson <pbrobinson@fedoraproject.org> - 0.8.1-11
- Rebuild
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 0.8.1-10 * Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.8.1-10
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.8.1-9 * Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.8.1-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild

Loading…
Cancel
Save