public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/glib2] cve-2026-58016-f44: Update to 2.31.0
@ 2026-08-11 10:34 Tomas Bzatek
  0 siblings, 0 replies; only message in thread
From: Tomas Bzatek @ 2026-08-11 10:34 UTC (permalink / raw)
  To: git-commits

A new commit has been pushed.

Repo   : rpms/glib2
Branch : cve-2026-58016-f44
Commit : 7541cc7333d87fdd70a6319ad56b2807003d9ba4
Author : Tomas Bzatek <tbzatek@redhat.com>
Date   : 2011-10-21T12:49:26+02:00
Stats  : +7/-224 in 4 file(s)
URL    : https://src.fedoraproject.org/rpms/glib2/c/7541cc7333d87fdd70a6319ad56b2807003d9ba4?branch=cve-2026-58016-f44

Log:
Update to 2.31.0

---
diff --git a/.gitignore b/.gitignore
index 729c37e..df5ebc1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -29,3 +29,4 @@ glib-2.25.13.tar.bz2
 /glib-2.29.92.tar.xz
 /glib-2.30.0.tar.xz
 /glib-2.30.1.tar.xz
+/glib-2.31.0.tar.xz

diff --git a/0001-closure-fix-handling-of-ENUMs-and-integral-return-ty.patch b/0001-closure-fix-handling-of-ENUMs-and-integral-return-ty.patch
deleted file mode 100644
index 06a39b7..0000000
--- a/0001-closure-fix-handling-of-ENUMs-and-integral-return-ty.patch
+++ /dev/null
@@ -1,218 +0,0 @@
-From 8e82225aedf81ea8a33deb3eb27a8878cd606521 Mon Sep 17 00:00:00 2001
-From: Dan Williams <dcbw@redhat.com>
-Date: Fri, 23 Sep 2011 12:32:23 -0500
-Subject: [PATCH] closure: fix handling of ENUMs and integral return types on
- 64-bit BE platforms
-
-enums are stored in v_long but need to be marshalled as signed
-integers.  On platforms where int is 32 bits, taking the
-address of v_long resulted in the wrong 32 bits being marshalled.
-So we need to stuff the enum's int-sized value to a temporary
-int-sized variable and marshall that instead.
-
-Second, on return, libffi actually returns a pointer to a value
-that's sized according to platform conventions, not according to
-what the caller requested.  ie if ffi_type_sint was requested, the
-value can still be a 64-bit sign-extended long on a 64-bit
-architecture like PPC64, thus the caller cannot simply cast
-the return value as a pointer to the desired type, but must cast
-as a pointer to an integral type and then cast to the desired
-type to remove any sign extension complications.
-
-For more information on how to correctly handle libffi return
-values, see the following bug, specifically comment 35:
-
-https://bugzilla.redhat.com/show_bug.cgi?id=736489
-
-"For 64-bit ABIs that extend integral returns types to 64-bits, libffi always
-returns full 64-bit values that you can truncate in the calling code.   It's
-just the way it is has always been.  Please don't change libffi.  I'll document
-this clearly for the next version (perhaps there is a mention of this, I
-haven't looked yet).
-
-The same is true for returning 8-bit values, for instance, on 32-bit systems.
-All ABIs extend those results to the full 32-bits so you need to provide a
-properly aligned buffer that's big enough to hold the result."
-
-https://bugzilla.gnome.org/show_bug.cgi?id=659881
----
- gobject/gclosure.c |   76 ++++++++++++++++++++++++++++++++++++++++-----------
- 1 files changed, 59 insertions(+), 17 deletions(-)
-
-diff --git a/gobject/gclosure.c b/gobject/gclosure.c
-index 36ec4b0..6893484 100644
---- a/gobject/gclosure.c
-+++ b/gobject/gclosure.c
-@@ -944,21 +944,42 @@ g_signal_type_cclosure_new (GType    itype,
- 
- #include <ffi.h>
- static ffi_type *
--value_to_ffi_type (const GValue *gvalue, gpointer *value)
-+value_to_ffi_type (const GValue *gvalue,
-+                   gpointer *value,
-+                   gint *enum_tmpval,
-+                   gboolean *tmpval_used)
- {
-   ffi_type *rettype = NULL;
-   GType type = g_type_fundamental (G_VALUE_TYPE (gvalue));
-   g_assert (type != G_TYPE_INVALID);
- 
-+  if (enum_tmpval)
-+    {
-+      g_assert (tmpval_used != NULL);
-+      *tmpval_used = FALSE;
-+    }
-+
-   switch (type)
-     {
-     case G_TYPE_BOOLEAN:
-     case G_TYPE_CHAR:
-     case G_TYPE_INT:
--    case G_TYPE_ENUM:
-       rettype = &ffi_type_sint;
-       *value = (gpointer)&(gvalue->data[0].v_int);
-       break;
-+    case G_TYPE_ENUM:
-+      /* enums are stored in v_long even though they are integers, which makes
-+       * marshalling through libffi somewhat complicated.  They need to be
-+       * marshalled as signed ints, but we need to use a temporary int sized
-+       * value to pass to libffi otherwise it'll pull the wrong value on
-+       * BE machines with 32-bit integers when treating v_long as 32-bit int.
-+       */
-+      g_assert (enum_tmpval != NULL);
-+      rettype = &ffi_type_sint;
-+      *enum_tmpval = g_value_get_enum (gvalue);
-+      *value = enum_tmpval;
-+      *tmpval_used = TRUE;
-+      break;
-     case G_TYPE_UCHAR:
-     case G_TYPE_UINT:
-     case G_TYPE_FLAGS:
-@@ -1011,10 +1032,12 @@ value_to_ffi_type (const GValue *gvalue, gpointer *value)
- static void
- value_from_ffi_type (GValue *gvalue, gpointer *value)
- {
-+  ffi_arg *int_val = value;
-+
-   switch (g_type_fundamental (G_VALUE_TYPE (gvalue)))
-     {
-     case G_TYPE_INT:
--      g_value_set_int (gvalue, *(gint*)value);
-+      g_value_set_int (gvalue, (gint) *int_val);
-       break;
-     case G_TYPE_FLOAT:
-       g_value_set_float (gvalue, *(gfloat*)value);
-@@ -1023,43 +1046,43 @@ value_from_ffi_type (GValue *gvalue, gpointer *value)
-       g_value_set_double (gvalue, *(gdouble*)value);
-       break;
-     case G_TYPE_BOOLEAN:
--      g_value_set_boolean (gvalue, *(gboolean*)value);
-+      g_value_set_boolean (gvalue, (gboolean) *int_val);
-       break;
-     case G_TYPE_STRING:
-       g_value_set_string (gvalue, *(gchar**)value);
-       break;
-     case G_TYPE_CHAR:
--      g_value_set_char (gvalue, *(gchar*)value);
-+      g_value_set_char (gvalue, (gchar) *int_val);
-       break;
-     case G_TYPE_UCHAR:
--      g_value_set_uchar (gvalue, *(guchar*)value);
-+      g_value_set_uchar (gvalue, (guchar) *int_val);
-       break;
-     case G_TYPE_UINT:
--      g_value_set_uint (gvalue, *(guint*)value);
-+      g_value_set_uint (gvalue, (guint) *int_val);
-       break;
-     case G_TYPE_POINTER:
-       g_value_set_pointer (gvalue, *(gpointer*)value);
-       break;
-     case G_TYPE_LONG:
--      g_value_set_long (gvalue, *(glong*)value);
-+      g_value_set_long (gvalue, (glong) *int_val);
-       break;
-     case G_TYPE_ULONG:
--      g_value_set_ulong (gvalue, *(gulong*)value);
-+      g_value_set_ulong (gvalue, (gulong) *int_val);
-       break;
-     case G_TYPE_INT64:
--      g_value_set_int64 (gvalue, *(gint64*)value);
-+      g_value_set_int64 (gvalue, (gint64) *int_val);
-       break;
-     case G_TYPE_UINT64:
--      g_value_set_uint64 (gvalue, *(guint64*)value);
-+      g_value_set_uint64 (gvalue, (guint64) *int_val);
-       break;
-     case G_TYPE_BOXED:
-       g_value_set_boxed (gvalue, *(gpointer*)value);
-       break;
-     case G_TYPE_ENUM:
--      g_value_set_enum (gvalue, *(gint*)value);
-+      g_value_set_enum (gvalue, (gint) *int_val);
-       break;
-     case G_TYPE_FLAGS:
--      g_value_set_flags (gvalue, *(guint*)value);
-+      g_value_set_flags (gvalue, (guint) *int_val);
-       break;
-     case G_TYPE_PARAM:
-       g_value_set_param (gvalue, *(gpointer*)value);
-@@ -1108,10 +1131,13 @@ g_cclosure_marshal_generic (GClosure     *closure,
-   int i;
-   ffi_cif cif;
-   GCClosure *cc = (GCClosure*) closure;
-+  gint *enum_tmpval;
-+  gboolean tmpval_used = FALSE;
- 
-+  enum_tmpval = g_alloca (sizeof (gint));
-   if (return_gvalue && G_VALUE_TYPE (return_gvalue))
-     {
--      rtype = value_to_ffi_type (return_gvalue, &rvalue);
-+      rtype = value_to_ffi_type (return_gvalue, &rvalue, enum_tmpval, &tmpval_used);
-     }
-   else
-     {
-@@ -1124,22 +1150,38 @@ g_cclosure_marshal_generic (GClosure     *closure,
-   atypes = g_alloca (sizeof (ffi_type *) * n_args);
-   args =  g_alloca (sizeof (gpointer) * n_args);
- 
-+  if (tmpval_used)
-+    enum_tmpval = g_alloca (sizeof (gint));
-+
-   if (G_CCLOSURE_SWAP_DATA (closure))
-     {
-       atypes[n_args-1] = value_to_ffi_type (param_values + 0,
--                                            &args[n_args-1]);
-+                                            &args[n_args-1],
-+                                            enum_tmpval,
-+                                            &tmpval_used);
-       atypes[0] = &ffi_type_pointer;
-       args[0] = &closure->data;
-     }
-   else
-     {
--      atypes[0] = value_to_ffi_type (param_values + 0, &args[0]);
-+      atypes[0] = value_to_ffi_type (param_values + 0,
-+                                     &args[0],
-+                                     enum_tmpval,
-+                                     &tmpval_used);
-       atypes[n_args-1] = &ffi_type_pointer;
-       args[n_args-1] = &closure->data;
-     }
- 
-   for (i = 1; i < n_args - 1; i++)
--    atypes[i] = value_to_ffi_type (param_values + i, &args[i]);
-+    {
-+      if (tmpval_used)
-+        enum_tmpval = g_alloca (sizeof (gint));
-+
-+      atypes[i] = value_to_ffi_type (param_values + i,
-+                                     &args[i],
-+                                     enum_tmpval,
-+                                     &tmpval_used);
-+    }
- 
-   if (ffi_prep_cif (&cif, FFI_DEFAULT_ABI, n_args, rtype, atypes) != FFI_OK)
-     return;
--- 
-1.7.6.4
-

diff --git a/glib2.spec b/glib2.spec
index d55d72a..de88458 100644
--- a/glib2.spec
+++ b/glib2.spec
@@ -2,15 +2,13 @@
 
 Summary: A library of handy utility functions
 Name: glib2
-Version: 2.30.1
+Version: 2.31.0
 Release: 1%{?dist}
 License: LGPLv2+
 Group: System Environment/Libraries
 URL: http://www.gtk.org
 #VCS: git:git://git.gnome.org/glib
-Source: http://download.gnome.org/sources/glib/2.30/glib-%{version}.tar.xz
-
-Patch0: 0001-closure-fix-handling-of-ENUMs-and-integral-return-ty.patch
+Source: http://download.gnome.org/sources/glib/2.31/glib-%{version}.tar.xz
 
 BuildRequires: pkgconfig
 BuildRequires: gamin-devel
@@ -59,7 +57,6 @@ The glib2-static package includes static libraries of the GLib library.
 
 %prep
 %setup -q -n glib-%{version}
-%patch0 -p1 -b .ffi
 
 %build
 # Support builds of both git snapshots and tarballs packed with autogoo
@@ -162,6 +159,9 @@ gio-querymodules-%{__isa_bits} %{_libdir}/gio/modules
 
 
 %changelog
+* Fri Oct 21 2011 Tomas Bzatek <tbzatek@redhat.com> - 2.31.0-1
+- Update to 2.31.0
+
 * Fri Oct 14 2011 Matthias Clasen <mclasen@redhat.com> - 2.30.1-1
 - Update to 2.30.1
 

diff --git a/sources b/sources
index 790152c..276348d 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-1954dca69994fb8f60280341da3fe2ae  glib-2.30.1.tar.xz
+3806d113305cdb5193174de5d354294e  glib-2.31.0.tar.xz

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-08-11 10:34 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-08-11 10:34 [rpms/glib2] cve-2026-58016-f44: Update to 2.31.0 Tomas Bzatek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox