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:
