Date: Tuesday, November 15, 2022 @ 22:41:56
  Author: heftig
Revision: 461858

0.9.1-2: FS#76560 patch a crash

Added:
  librest/trunk/30.patch
Modified:
  librest/trunk/PKGBUILD

----------+
 30.patch |   73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 PKGBUILD |   16 +++++++++----
 2 files changed, 84 insertions(+), 5 deletions(-)

Added: 30.patch
===================================================================
--- 30.patch                            (rev 0)
+++ 30.patch    2022-11-15 22:41:56 UTC (rev 461858)
@@ -0,0 +1,73 @@
+From fbad64abe28a96f591a30e3a5d3189c10172a414 Mon Sep 17 00:00:00 2001
+From: Adam Williamson <[email protected]>
+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 <[email protected]>
+---
+ 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);
+ 
+-- 
+GitLab
+
+
+From 8049048a0f7d52b3f4101c7123797fed099d4cc8 Mon Sep 17 00:00:00 2001
+From: Adam Williamson <[email protected]>
+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.
+
+Signed-off-by: Adam Williamson <[email protected]>
+---
+ rest/rest-oauth2-proxy.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/rest/rest-oauth2-proxy.c b/rest/rest-oauth2-proxy.c
+index 9511f97..7d5780d 100644
+--- a/rest/rest-oauth2-proxy.c
++++ b/rest/rest-oauth2-proxy.c
+@@ -70,6 +70,8 @@ rest_oauth2_proxy_parse_access_token (RestOAuth2Proxy *self,
+   gint created_at;
+ 
+   g_return_if_fail (REST_IS_OAUTH2_PROXY (self));
++  if (!payload)
++    return;
+ 
+   data = g_bytes_get_data (payload, &size);
+ 
+-- 
+GitLab
+

Modified: PKGBUILD
===================================================================
--- PKGBUILD    2022-11-15 22:35:59 UTC (rev 461857)
+++ PKGBUILD    2022-11-15 22:41:56 UTC (rev 461858)
@@ -3,7 +3,7 @@
 pkgbase=librest
 pkgname=(librest librest-docs librest-demos)
 pkgver=0.9.1
-pkgrel=1
+pkgrel=2
 pkgdesc="Library for accessing RESTful web services"
 url="https://gitlab.gnome.org/GNOME/librest";
 arch=(x86_64)
@@ -13,8 +13,10 @@
              gtksourceview5)
 options=(debug)
 _commit=aa9e968e381ede159414c6338da24d61ad0b5d8b  # tags/0.9.1^0
-source=("git+https://gitlab.gnome.org/GNOME/librest.git#commit=$_commit";)
-sha256sums=('SKIP')
+source=("git+https://gitlab.gnome.org/GNOME/librest.git#commit=$_commit";
+        30.patch)
+b2sums=('SKIP'
+        
'a5e54797a758b67c7f9aa6e90cd7b6435dfa1f7abc86b9b88c0c98e78724b15308ca8af4ccb138d1d01948e54ed9bf930ee37a7d253e6c979846f93f92fef2c2')
 
 pkgver() {
   cd librest
@@ -23,10 +25,14 @@
 
 prepare() {
   cd librest
+
+  # https://bugs.archlinux.org/task/76560
+  # https://gitlab.gnome.org/GNOME/librest/-/merge_requests/30
+  git apply -3 ../30.patch
 }
 
 build() {
-  arch-meson librest build
+  arch-meson librest build -D vapi=true
   meson compile -C build
 }
 
@@ -71,4 +77,4 @@
   mv demo/* "$pkgdir"
 }
 
-# vim:set sw=2 et:
+# vim:set sw=2 sts=-1 et:

Reply via email to