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

Reply via email to