Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package wireplumber for openSUSE:Factory checked in at 2022-02-11 23:06:43 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/wireplumber (Old) and /work/SRC/openSUSE:Factory/.wireplumber.new.1956 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "wireplumber" Fri Feb 11 23:06:43 2022 rev:7 rq:953378 version:0.4.8 Changes: -------- --- /work/SRC/openSUSE:Factory/wireplumber/wireplumber.changes 2022-02-09 20:39:19.362393575 +0100 +++ /work/SRC/openSUSE:Factory/.wireplumber.new.1956/wireplumber.changes 2022-02-11 23:07:08.826562119 +0100 @@ -1,0 +2,10 @@ +Fri Feb 11 08:09:05 UTC 2022 - Antonio Larrosa <alarr...@suse.com> + +- Add patch from upstream to fix va_list APIs for ppc64le and + aarch64, where va_list is not a pointer (boo#1195818): + * 0001-spa-json-fix-va_list-APIs-for-different-architectures.patch +- Add patch from upstream to fix a crash if config.properties is + nil: + * 0001-restore-stream-do-not-crash-if-config_properties-is-nil.patch + +------------------------------------------------------------------- New: ---- 0001-restore-stream-do-not-crash-if-config_properties-is-nil.patch 0001-spa-json-fix-va_list-APIs-for-different-architectures.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ wireplumber.spec ++++++ --- /var/tmp/diff_new_pack.UEuZ9I/_old 2022-02-11 23:07:09.402563718 +0100 +++ /var/tmp/diff_new_pack.UEuZ9I/_new 2022-02-11 23:07:09.410563741 +0100 @@ -30,7 +30,8 @@ URL: https://gitlab.freedesktop.org/pipewire/wireplumber Source0: wireplumber-%{version}.tar.xz Source1: split-config-file.py - +Patch0: 0001-spa-json-fix-va_list-APIs-for-different-architectures.patch +Patch1: 0001-restore-stream-do-not-crash-if-config_properties-is-nil.patch Patch100: reduce-meson-required-version.patch # docs BuildRequires: doxygen ++++++ 0001-restore-stream-do-not-crash-if-config_properties-is-nil.patch ++++++ >From 5f96f69218273573e625475846269b3914cfcecf Mon Sep 17 00:00:00 2001 From: George Kiagiadakis <george.kiagiada...@collabora.com> Date: Wed, 9 Feb 2022 13:35:13 +0200 Subject: [PATCH] restore-stream: do not crash if config.properties is nil Fixes #190 --- src/scripts/restore-stream.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/src/scripts/restore-stream.lua b/src/scripts/restore-stream.lua index 404eede5..0c17bdd7 100644 --- a/src/scripts/restore-stream.lua +++ b/src/scripts/restore-stream.lua @@ -10,6 +10,7 @@ -- Receive script arguments from config.lua local config = ... or {} +config.properties = config.properties or {} config_restore_props = config.properties["restore-props"] or false config_restore_target = config.properties["restore-target"] or false -- GitLab ++++++ 0001-spa-json-fix-va_list-APIs-for-different-architectures.patch ++++++ >From e429db7e8c266045aee25e153fb2308bd61fe233 Mon Sep 17 00:00:00 2001 From: Julian Bouzas <julian.bou...@collabora.com> Date: Wed, 9 Feb 2022 07:59:59 -0500 Subject: [PATCH] spa-json: fix va_list APIs for different architectures The va_list type might not always be a pointer in some architectures, so we cannot guarantee it will be modified after using it for a second time in another function. This fixes the issue by using macros so args does not get copied, and always gets modified when using it more than once. --- lib/wp/spa-json.c | 156 ++++++++++++++++++++++++---------------------- 1 file changed, 80 insertions(+), 76 deletions(-) diff --git a/lib/wp/spa-json.c b/lib/wp/spa-json.c index f14f395d..c5e59a3e 100644 --- a/lib/wp/spa-json.c +++ b/lib/wp/spa-json.c @@ -363,33 +363,33 @@ wp_spa_json_new_string (const gchar *value) wp_spa_json_builder_new_formatted ("\"%s\"", value)); } -static void -wp_spa_json_builder_add_value (WpSpaJsonBuilder *self, const gchar *fmt, - va_list args) -{ - switch (*fmt) { - case 'n': - wp_spa_json_builder_add_null (self); - break; - case 'b': - wp_spa_json_builder_add_boolean (self, va_arg(args, gboolean)); - break; - case 'i': - wp_spa_json_builder_add_int (self, va_arg(args, gint)); - break; - case 'f': - wp_spa_json_builder_add_float (self, (float)va_arg(args, double)); - break; - case 's': - wp_spa_json_builder_add_string (self, va_arg(args, const gchar *)); - break; - case 'J': - wp_spa_json_builder_add_json (self, va_arg(args, WpSpaJson *)); - break; - default: - return; - } -} +/* Args is not a pointer in some architectures, so this needs to be a macro to + * avoid args being copied */ +#define wp_spa_json_builder_add_value(self,fmt,args) \ +do { \ + switch (*fmt) { \ + case 'n': \ + wp_spa_json_builder_add_null (self); \ + break; \ + case 'b': \ + wp_spa_json_builder_add_boolean (self, va_arg(args, gboolean)); \ + break; \ + case 'i': \ + wp_spa_json_builder_add_int (self, va_arg(args, gint)); \ + break; \ + case 'f': \ + wp_spa_json_builder_add_float (self, (float)va_arg(args, double)); \ + break; \ + case 's': \ + wp_spa_json_builder_add_string (self, va_arg(args, const gchar *)); \ + break; \ + case 'J': \ + wp_spa_json_builder_add_json (self, va_arg(args, WpSpaJson *)); \ + break; \ + default: \ + break; \ + } \ +} while(false) /*! * \brief Creates a spa json of type array @@ -724,48 +724,46 @@ wp_spa_json_parse_object_valist (WpSpaJson *self, va_list args) return res; } -static gboolean -wp_spa_json_parse_value (const gchar *data, int len, const gchar *fmt, - va_list args) -{ - switch (*fmt) { - case 'n': - if (!spa_json_is_null (data, len)) - return FALSE; - break; - case 'b': - if (!wp_spa_json_parse_boolean_internal (data, len, - va_arg(args, gboolean *))) - return FALSE; - break; - case 'i': - if (spa_json_parse_int (data, len, va_arg(args, gint *)) < 0) - return FALSE; - break; - case 'f': - if (spa_json_parse_float (data, len, - (float *)va_arg(args, double *)) < 0) - return FALSE; - break; - case 's': { - gchar *str = wp_spa_json_parse_string_internal (data, len); - if (!str) - return FALSE; - *va_arg(args, gchar **) = str; - break; - } - case 'J': { - WpSpaJson *j = wp_spa_json_new (data, len); - if (!j) - return FALSE; - *va_arg(args, WpSpaJson **) = j; - break; - } - default: - return FALSE; - } - return TRUE; -} +/* Args is not a pointer in some architectures, so this needs to be a macro to + * avoid args being copied */ +#define wp_spa_json_parse_value(data,len,fmt,args) \ +do { \ + switch (*fmt) { \ + case 'n': \ + if (!spa_json_is_null (data, len)) \ + return FALSE; \ + break; \ + case 'b': \ + if (!wp_spa_json_parse_boolean_internal (data, len, \ + va_arg(args, gboolean *))) \ + return FALSE; \ + break; \ + case 'i': \ + if (spa_json_parse_int (data, len, va_arg(args, gint *)) < 0) \ + return FALSE; \ + break; \ + case 'f': \ + if (spa_json_parse_float (data, len, va_arg(args, float *)) < 0) \ + return FALSE; \ + break; \ + case 's': { \ + gchar *str = wp_spa_json_parse_string_internal (data, len); \ + if (!str) \ + return FALSE; \ + *va_arg(args, gchar **) = str; \ + break; \ + } \ + case 'J': { \ + WpSpaJson *j = wp_spa_json_new (data, len); \ + if (!j) \ + return FALSE; \ + *va_arg(args, WpSpaJson **) = j; \ + break; \ + } \ + default: \ + return FALSE; \ + } \ +} while(false) /*! * \brief Parses the object property values of a spa json object @@ -827,8 +825,7 @@ wp_spa_json_object_get_valist (WpSpaJson *self, va_list args) value = g_value_get_boxed (&item); if (g_strcmp0 (key_str, lookup_key) == 0) { - if (!wp_spa_json_parse_value (value->data, value->size, lookup_fmt, args)) - return FALSE; + wp_spa_json_parse_value (value->data, value->size, lookup_fmt, args); lookup_key = va_arg(args, const gchar *); if (!lookup_key) return TRUE; @@ -1366,9 +1363,12 @@ gboolean wp_spa_json_parser_get_value (WpSpaJsonParser *self, const gchar *fmt, va_list args) { - return wp_spa_json_parser_advance (self) && - wp_spa_json_parse_value (self->curr.cur, - self->curr.end - self->curr.cur, fmt, args); + if (wp_spa_json_parser_advance (self)) { + wp_spa_json_parse_value (self->curr.cur, self->curr.end - self->curr.cur, + fmt, args); + return TRUE; + } + return FALSE; } /*! @@ -1419,9 +1419,13 @@ wp_spa_json_parser_get_valist (WpSpaJsonParser *self, va_list args) if (!format) return TRUE; - /* parse value */ - if (!wp_spa_json_parser_get_value (self, format, args)) + /* advance */ + if (!wp_spa_json_parser_advance (self)) return FALSE; + + /* parse value */ + wp_spa_json_parse_value (self->curr.cur, self->curr.end - self->curr.cur, + format, args); } while (TRUE); return FALSE; -- GitLab