Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package jsonrpc-glib for openSUSE:Leap:16.0 checked in at 2025-07-15 11:24:39 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Leap:16.0/jsonrpc-glib (Old) and /work/SRC/openSUSE:Leap:16.0/.jsonrpc-glib.new.7373 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "jsonrpc-glib" Tue Jul 15 11:24:39 2025 rev:2 rq:1292398 version:3.44.2 Changes: -------- --- /work/SRC/openSUSE:Leap:16.0/jsonrpc-glib/jsonrpc-glib.changes 2025-03-19 11:47:16.851144193 +0100 +++ /work/SRC/openSUSE:Leap:16.0/.jsonrpc-glib.new.7373/jsonrpc-glib.changes 2025-07-15 11:25:05.666399759 +0200 @@ -1,0 +2,6 @@ +Sun Jun 29 07:13:44 UTC 2025 - Bjørn Lie <bjorn....@gmail.com> + +- Update to version 3.44.2: + + Improvements for potential UB usage for 8-byte aligned types. + +------------------------------------------------------------------- Old: ---- jsonrpc-glib-3.44.1.tar.xz New: ---- jsonrpc-glib-3.44.2.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ jsonrpc-glib.spec ++++++ --- /var/tmp/diff_new_pack.io3hf1/_old 2025-07-15 11:25:05.906409716 +0200 +++ /var/tmp/diff_new_pack.io3hf1/_new 2025-07-15 11:25:05.910409882 +0200 @@ -1,7 +1,7 @@ # # spec file for package jsonrpc-glib # -# Copyright (c) 2024 SUSE LLC +# Copyright (c) 2025 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -19,7 +19,7 @@ %define sover 1_0-1 Name: jsonrpc-glib -Version: 3.44.1 +Version: 3.44.2 Release: 0 Summary: Library to communicate with JSON-RPC based peers License: LGPL-2.1-or-later ++++++ jsonrpc-glib-3.44.1.tar.xz -> jsonrpc-glib-3.44.2.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonrpc-glib-3.44.1/.gitlab-ci.yml new/jsonrpc-glib-3.44.2/.gitlab-ci.yml --- old/jsonrpc-glib-3.44.1/.gitlab-ci.yml 2024-08-03 18:43:52.000000000 +0200 +++ new/jsonrpc-glib-3.44.2/.gitlab-ci.yml 2025-06-29 02:33:36.000000000 +0200 @@ -1,10 +1,18 @@ -image: fedora:latest -stages: - - test - - docs - - deploy +include: + - project: "GNOME/citemplates" + file: "templates/default-rules.yml" + - component: gitlab.gnome.org/GNOME/citemplates/gnomeos-basic-ci@master + inputs: + job-stage: "test" + meson-options: "-Denable_gtk_doc=true" + - component: "gitlab.gnome.org/GNOME/citemplates/basic-deploy-docs@master" + - component: gitlab.gnome.org/GNOME/citemplates/release-service@master + inputs: + dist-job-name: "build-gnomeos" + tarball-artifact-path: "_builddir/meson-dist/$CI_PROJECT_NAME-$CI_COMMIT_TAG.tar.xz" build: + image: fedora:latest stage: test script: - sudo dnf install 'dnf-command(builddep)' -y @@ -12,29 +20,3 @@ - meson _build - ninja -C _build - ninja -C _build test - -reference: - stage: docs - script: - - sudo dnf install 'dnf-command(builddep)' -y - - sudo dnf builddep jsonrpc-glib-devel -y - - sudo dnf install gi-docgen -y - - mkdir -p pfx/ - - meson --prefix=${PWD}/pfx -Denable_gtk_doc=true _build - - ninja -C _build install - - mkdir -p _reference/ - - mv pfx/share/doc/jsonrpc-glib/* _reference/ - artifacts: - paths: - - _reference - -pages: - stage: deploy - needs: ['reference'] - script: - - mv _reference public - artifacts: - paths: - - public - only: - - main diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonrpc-glib-3.44.1/NEWS new/jsonrpc-glib-3.44.2/NEWS --- old/jsonrpc-glib-3.44.1/NEWS 2024-08-03 18:43:52.000000000 +0200 +++ new/jsonrpc-glib-3.44.2/NEWS 2025-06-29 02:33:36.000000000 +0200 @@ -1,4 +1,10 @@ ============== +Version 3.44.2 +============== + +Improvements for potential UB usage for 8-byte aligned types + +============== Version 3.44.1 ============== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonrpc-glib-3.44.1/README.md new/jsonrpc-glib-3.44.2/README.md --- old/jsonrpc-glib-3.44.1/README.md 2024-08-03 18:43:52.000000000 +0200 +++ new/jsonrpc-glib-3.44.2/README.md 2025-06-29 02:33:36.000000000 +0200 @@ -17,4 +17,4 @@ ## Documentation -Nightly documentations can be found at https://gnome.pages.gitlab.gnome.org/jsonrpc-glib/ +Nightly documentations can be found at https://gnome.pages.gitlab.gnome.org/jsonrpc-glib/jsonrpc-glib/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonrpc-glib-3.44.1/doc/Jsonrpc.toml.in new/jsonrpc-glib-3.44.2/doc/Jsonrpc.toml.in --- old/jsonrpc-glib-3.44.1/doc/Jsonrpc.toml.in 2024-08-03 18:43:52.000000000 +0200 +++ new/jsonrpc-glib-3.44.2/doc/Jsonrpc.toml.in 2025-06-29 02:33:36.000000000 +0200 @@ -3,7 +3,7 @@ browse_url = "https://gitlab.gnome.org/GNOME/jsonrpc-glib/" repository_url = "https://gitlab.gnome.org/GNOME/jsonrpc-glib.git" website_url = "https://gitlab.gnome.org/GNOME/jsonrpc-glib/" -docs_url = "https://gnome.pages.gitlab.gnome.org/jsonrpc-glib/" +docs_url = "https://gnome.pages.gitlab.gnome.org/jsonrpc-glib/jsonrpc-glib" authors = "Christian Hergert" license = "LGPL-2.1" description = "A GNOME library to communicate with JSON-RPC based peers" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonrpc-glib-3.44.1/meson.build new/jsonrpc-glib-3.44.2/meson.build --- old/jsonrpc-glib-3.44.1/meson.build 2024-08-03 18:43:52.000000000 +0200 +++ new/jsonrpc-glib-3.44.2/meson.build 2025-06-29 02:33:36.000000000 +0200 @@ -1,5 +1,5 @@ project('jsonrpc-glib', 'c', - version: '3.44.1', + version: '3.44.2', license: 'LGPLv2.1+', meson_version: '>= 0.49.2', default_options: [ 'warning_level=1', 'buildtype=debugoptimized', 'c_std=gnu11' ], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonrpc-glib-3.44.1/src/jsonrpc-client.c new/jsonrpc-glib-3.44.2/src/jsonrpc-client.c --- old/jsonrpc-glib-3.44.1/src/jsonrpc-client.c 2024-08-03 18:43:52.000000000 +0200 +++ new/jsonrpc-glib-3.44.2/src/jsonrpc-client.c 2025-06-29 02:33:36.000000000 +0200 @@ -706,8 +706,16 @@ if (_jsonrpc_input_stream_get_has_seen_gvariant (stream)) jsonrpc_client_set_use_gvariant (self, TRUE); - /* Make sure we got a proper type back from the variant. */ - if (!g_variant_is_of_type (message, G_VARIANT_TYPE_VARDICT)) + if (g_variant_is_of_type (message, G_VARIANT_TYPE ("aa{sv}"))) + { + /* TODO: Handle incoming batch mode */ + error = g_error_new_literal (G_IO_ERROR, + G_IO_ERROR_INVALID_DATA, + "Batch mode not supported"); + jsonrpc_client_panic (self, error); + return; + } + else if (!g_variant_is_of_type (message, G_VARIANT_TYPE_VARDICT)) { error = g_error_new_literal (G_IO_ERROR, G_IO_ERROR_INVALID_DATA, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonrpc-glib-3.44.1/src/jsonrpc-message.c new/jsonrpc-glib-3.44.2/src/jsonrpc-message.c --- old/jsonrpc-glib-3.44.1/src/jsonrpc-message.c 2024-08-03 18:43:52.000000000 +0200 +++ new/jsonrpc-glib-3.44.2/src/jsonrpc-message.c 2025-06-29 02:33:36.000000000 +0200 @@ -35,7 +35,7 @@ #endif #define COMPARE_MAGIC(_any,_magic) \ - (strncmp ((_any)->magic.bytes, \ + (strncmp ((const char *)_any, \ _JSONRPC_MESSAGE_##_magic##_MAGIC, \ sizeof ((_any)->magic.bytes)) == 0) @@ -87,7 +87,7 @@ * recursion to read the next key/val pair. */ - if (!keyptr || keyptr->magic.bytes[0] == '}') + if (!keyptr || ((const char *)keyptr)[0] == '}') EXIT; g_assert (!IS_PUT_VARIANT (keyptr)); @@ -110,7 +110,7 @@ g_variant_builder_add (builder, "s", key); g_variant_builder_open (builder, G_VARIANT_TYPE ("v")); - switch (valptr->magic.bytes[0]) + switch (((const char *)valptr)[0]) { case '{': param = va_arg (*args, gconstpointer); @@ -207,12 +207,12 @@ ENTRY; /* If we have the end of the array, we're done */ - if (valptr->magic.bytes[0] == ']') + if (((const char *)valptr)[0] == ']') EXIT; g_variant_builder_open (builder, G_VARIANT_TYPE ("v")); - switch (valptr->magic.bytes[0]) + switch (((const char *)valptr)[0]) { case '{': g_variant_builder_open (builder, G_VARIANT_TYPE ("a{sv}")); @@ -350,7 +350,7 @@ if (valptr == NULL) g_error ("got unexpected NULL for key %s", key); - if (valptr->magic.bytes[0] == '{' || IS_GET_DICT (valptr)) + if (((const char *)valptr)[0] == '{' || IS_GET_DICT (valptr)) { g_autoptr(GVariant) value = NULL; @@ -371,7 +371,7 @@ } } } - else if (valptr->magic.bytes[0] == '[' || IS_GET_ITER (valptr)) + else if (((const char *)valptr)[0] == '[' || IS_GET_ITER (valptr)) { g_autoptr(GVariantIter) subiter = NULL; g_autoptr(GVariant) subvalue = NULL; @@ -515,13 +515,13 @@ g_assert (iter != NULL); - if (valptr == NULL || valptr->magic.bytes[0] == ']') + if (valptr == NULL || ((const char *)valptr)[0] == ']') RETURN (TRUE); if (!g_variant_iter_next (iter, "v", &value)) RETURN (FALSE); - if (valptr->magic.bytes[0] == '{' || IS_GET_DICT (valptr)) + if (((const char *)valptr)[0] == '{' || IS_GET_DICT (valptr)) { if (g_variant_is_of_type (value, G_VARIANT_TYPE ("a{sv}"))) { @@ -538,7 +538,7 @@ } } } - else if (valptr->magic.bytes[0] == '[' || IS_GET_ITER (valptr)) + else if (((const char *)valptr)[0] == '[' || IS_GET_ITER (valptr)) { if (g_variant_is_of_type (value, G_VARIANT_TYPE ("av"))) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonrpc-glib-3.44.1/src/jsonrpc-message.h new/jsonrpc-glib-3.44.2/src/jsonrpc-message.h --- old/jsonrpc-glib-3.44.1/src/jsonrpc-message.h 2024-08-03 18:43:52.000000000 +0200 +++ new/jsonrpc-glib-3.44.2/src/jsonrpc-message.h 2025-06-29 02:33:36.000000000 +0200 @@ -28,7 +28,7 @@ typedef struct { char bytes[8]; -} JsonrpcMessageMagic; +} JsonrpcMessageMagic __attribute__((aligned (8))); typedef struct { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jsonrpc-glib-3.44.1/tests/test-message.c new/jsonrpc-glib-3.44.2/tests/test-message.c --- old/jsonrpc-glib-3.44.1/tests/test-message.c 2024-08-03 18:43:52.000000000 +0200 +++ new/jsonrpc-glib-3.44.2/tests/test-message.c 2025-06-29 02:33:36.000000000 +0200 @@ -21,7 +21,7 @@ "}" ); - g_assert (node != NULL); + g_assert_nonnull (node); r = JSONRPC_MESSAGE_PARSE (node, "foo", JSONRPC_MESSAGE_GET_STRING (&foo1), @@ -38,12 +38,12 @@ #define TESTSTR "{\"foo\": \"foo1\", \"bar\": \"foo2\", \"baz\": {\"baz\": [{\"baz\": 123}]}}" parser = json_parser_new (); r = json_parser_load_from_data (parser, TESTSTR, -1, &error); - g_assert (r); + g_assert_true (r); g_assert_no_error (error); deserialized = json_gvariant_deserialize (json_parser_get_root (parser), NULL, &error); - g_assert (deserialized); + g_assert_true (deserialized); g_assert_no_error (error); - g_assert (g_variant_equal (deserialized, node)); + g_assert_true (g_variant_equal (deserialized, node)); #undef TESTSTR } @@ -56,7 +56,7 @@ gboolean r; node = JSONRPC_MESSAGE_NEW ("foo", "[","[","[","[","[","[","[","[","[","[", "abc", "]", "]","]","]","]","]","]","]","]","]"); - g_assert (node != NULL); + g_assert_nonnull (node); r = JSONRPC_MESSAGE_PARSE (node, "foo", "[","[","[","[","[","[","[","[","[","[", JSONRPC_MESSAGE_GET_STRING (&abc), "]", "]","]","]","]","]","]","]","]","]"); g_assert_cmpstr (abc, ==, "abc"); @@ -65,7 +65,7 @@ g_clear_pointer (&node, g_variant_unref); node = JSONRPC_MESSAGE_NEW ("foo", "[","[","[","[","[","[","[","[","[","{", "foo", "xyz", "}", "]","]","]","]","]","]","]","]","]"); - g_assert (node != NULL); + g_assert_nonnull (node); r = JSONRPC_MESSAGE_PARSE (node, "foo", "[","[","[","[","[","[","[","[","[","{", "foo", JSONRPC_MESSAGE_GET_STRING (&xyz), "}", "]","]","]","]","]","]","]","]","]"); g_assert_cmpstr (xyz, ==, "xyz"); @@ -81,10 +81,10 @@ gint32 a=0, b=0, c=0; node = JSONRPC_MESSAGE_NEW ("foo", "[", JSONRPC_MESSAGE_PUT_INT32 (1), JSONRPC_MESSAGE_PUT_INT32 (2), JSONRPC_MESSAGE_PUT_INT32 (3), "]"); - g_assert (node != NULL); + g_assert_nonnull (node); r = JSONRPC_MESSAGE_PARSE (node, "foo", JSONRPC_MESSAGE_GET_VARIANT (&ar123)); - g_assert (ar123 != NULL); + g_assert_nonnull (ar123); g_assert_cmpint (r, ==, 1); g_assert_cmpint (3, ==, g_variant_n_children (ar123)); @@ -103,11 +103,11 @@ gboolean r; node = JSONRPC_MESSAGE_NEW ("foo", "{", "bar", "[", JSONRPC_MESSAGE_PUT_INT32 (1), "two", JSONRPC_MESSAGE_PUT_INT32 (3), "]", "}"); - g_assert (node != NULL); + g_assert_nonnull (node); r = JSONRPC_MESSAGE_PARSE (node, "foo", JSONRPC_MESSAGE_GET_DICT (&dict)); - g_assert (dict != NULL); - g_assert (g_variant_dict_contains (dict, "bar")); + g_assert_nonnull (dict); + g_assert_true (g_variant_dict_contains (dict, "bar")); g_assert_cmpint (r, ==, TRUE); } @@ -120,18 +120,24 @@ gboolean r; node = JSONRPC_MESSAGE_NEW ("foo", "{", "bar", "[", JSONRPC_MESSAGE_PUT_INT32 (1), "two", JSONRPC_MESSAGE_PUT_INT32 (3), "]", "}"); - g_assert (node != NULL); + g_assert_nonnull (node); r = JSONRPC_MESSAGE_PARSE (node, "foo", "{", "bar", JSONRPC_MESSAGE_GET_VARIANT (&ar), "}"); - g_assert (ar != NULL); + g_assert_nonnull (ar); g_assert_cmpint (r, ==, TRUE); + g_clear_pointer (&node, g_variant_unref); + g_clear_pointer (&ar, g_variant_unref); node = jsonrpc_message_new ("foo", "{", "bar", "[", JSONRPC_MESSAGE_PUT_INT32 (1), "]", "}", NULL); - g_assert (node != NULL); + g_assert_nonnull (node); + g_clear_pointer (&node, g_variant_unref); node2 = JSONRPC_MESSAGE_NEW ("bar", JSONRPC_MESSAGE_PUT_INT32 (1)); - node = JSONRPC_MESSAGE_NEW ("foo", "{", JSONRPC_MESSAGE_PUT_VARIANT (g_steal_pointer (&node2)), "}"); - g_assert (node != NULL); + g_assert_nonnull (node2); + node = JSONRPC_MESSAGE_NEW ("foo", "{", JSONRPC_MESSAGE_PUT_VARIANT (node2), "}"); + g_assert_nonnull (node); + g_clear_pointer (&node, g_variant_unref); + g_clear_pointer (&node2, g_variant_unref); } static void @@ -143,7 +149,7 @@ gboolean r; node = JSONRPC_MESSAGE_NEW ("foo", "{", "bar", "[", JSONRPC_MESSAGE_PUT_STRING (paren), "]", "}"); - g_assert (node != NULL); + g_assert_nonnull (node); r = JSONRPC_MESSAGE_PARSE (node, "foo", "{", "bar", "[", JSONRPC_MESSAGE_GET_STRING (&str), "]", "}"); g_assert_cmpstr (str, ==, "{"); @@ -160,11 +166,11 @@ gboolean r; node = JSONRPC_MESSAGE_NEW ("foo", "[", "a", "b", "c", "d", "e", "]"); - g_assert (node != NULL); + g_assert_nonnull (node); r = JSONRPC_MESSAGE_PARSE (node, "foo", JSONRPC_MESSAGE_GET_ITER (&iter)); g_assert_cmpint (r, ==, TRUE); - g_assert (iter != NULL); + g_assert_nonnull (iter); r = JSONRPC_MESSAGE_PARSE_ARRAY (iter, JSONRPC_MESSAGE_GET_STRING (&a), JSONRPC_MESSAGE_GET_STRING (&b)); g_assert_cmpint (r, ==, TRUE); @@ -184,8 +190,8 @@ gboolean r; node = JSONRPC_MESSAGE_NEW_ARRAY ("a", "b", "c", "d", "e"); - g_assert (node != NULL); - g_assert (g_variant_is_of_type (node, G_VARIANT_TYPE ("av"))); + g_assert_nonnull (node); + g_assert_true (g_variant_is_of_type (node, G_VARIANT_TYPE ("av"))); r = g_variant_iter_init (&iter, node); g_assert_true (r); @@ -210,8 +216,8 @@ g_autoptr(GVariant) node = NULL; node = JSONRPC_MESSAGE_NEW_ARRAY ("{","}", "{", "}"); - g_assert (node != NULL); - g_assert (g_variant_is_of_type (node, G_VARIANT_TYPE ("av"))); + g_assert_nonnull (node); + g_assert_true (g_variant_is_of_type (node, G_VARIANT_TYPE ("av"))); g_assert_cmpint (g_variant_n_children (node), ==, 2); } @@ -230,7 +236,7 @@ "content-type", JSONRPC_MESSAGE_PUT_STRING (NULL) ); - g_assert (msg != NULL); + g_assert_nonnull (msg); success = JSONRPC_MESSAGE_PARSE (msg, "foo", JSONRPC_MESSAGE_GET_STRING (&foo),