Accepting request 1039673 from GNOME:Next

New stable release

OBS-URL: https://build.opensuse.org/request/show/1039673
OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/glib2?expand=0&rev=499
This commit is contained in:
Dominique Leuenberger 2022-12-03 11:21:51 +00:00 committed by Git OBS Bridge
parent fa99da4099
commit 36bafaff06
7 changed files with 64 additions and 174 deletions

View File

@ -1,30 +0,0 @@
From efb43ef813d90dca48aa01880f097a2161005db1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net>
Date: Sun, 23 Oct 2022 17:10:59 +0200
Subject: [PATCH] gio/gdesktopappinfo: Free the wrapped argv array on launch
failure
We create an array that we never free, ensure this is the case.
The previous commit gives CI a chance to check this with valgrind job.
Found as part of another review:
- https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2839#note_1524922
---
gio/gdesktopappinfo.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c
index f8cccca025..c29c309478 100644
--- a/gio/gdesktopappinfo.c
+++ b/gio/gdesktopappinfo.c
@@ -2963,6 +2963,7 @@ g_desktop_app_info_launch_uris_with_spawn (GDesktopAppInfo *info,
g_free (sn_id);
g_list_free (launched_uris);
+ g_clear_pointer (&wrapped_argv, g_strfreev);
goto out;
}
--
GitLab

View File

@ -1,118 +0,0 @@
From ca905744dffb844663b5bd6b42f33e2d44f9b4cd Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
Date: Fri, 28 Oct 2022 11:21:04 -0400
Subject: [PATCH] Revert "Handling collision between standard i/o file
descriptors and newly created ones"
g_unix_open_pipe tries to avoid the standard io fd range
when getting pipe fds. This turns out to be a bad idea because
certain buggy programs rely on it using that range.
This reverts commit d9ba6150909818beb05573f54f26232063492c5b
and adds a test to ensure we don't inadvertently do it again later.
Closes: https://gitlab.gnome.org/GNOME/glib/-/issues/2795
---
glib/glib-unix.c | 24 ------------------------
glib/tests/unix.c | 29 +++++++++++++++++++++++++++++
2 files changed, 29 insertions(+), 24 deletions(-)
diff --git a/glib/glib-unix.c b/glib/glib-unix.c
index 4710c51168..bc152d7663 100644
--- a/glib/glib-unix.c
+++ b/glib/glib-unix.c
@@ -108,17 +108,6 @@ g_unix_open_pipe (int *fds,
ecode = pipe2 (fds, pipe2_flags);
if (ecode == -1 && errno != ENOSYS)
return g_unix_set_error_from_errno (error, errno);
- /* Don't reassign pipes to stdin, stdout, stderr if closed meanwhile */
- else if (fds[0] < 3 || fds[1] < 3)
- {
- int old_fds[2] = { fds[0], fds[1] };
- gboolean result = g_unix_open_pipe (fds, flags, error);
- close (old_fds[0]);
- close (old_fds[1]);
-
- if (!result)
- g_unix_set_error_from_errno (error, errno);
- }
else if (ecode == 0)
return TRUE;
/* Fall through on -ENOSYS, we must be running on an old kernel */
@@ -127,19 +116,6 @@ g_unix_open_pipe (int *fds,
ecode = pipe (fds);
if (ecode == -1)
return g_unix_set_error_from_errno (error, errno);
- /* Don't reassign pipes to stdin, stdout, stderr if closed meanwhile */
- else if (fds[0] < 3 || fds[1] < 3)
- {
- int old_fds[2] = { fds[0], fds[1] };
- gboolean result = g_unix_open_pipe (fds, flags, error);
- close (old_fds[0]);
- close (old_fds[1]);
-
- if (!result)
- g_unix_set_error_from_errno (error, errno);
-
- return result;
- }
if (flags == 0)
return TRUE;
diff --git a/glib/tests/unix.c b/glib/tests/unix.c
index 2112cab6bf..5dde2b52cc 100644
--- a/glib/tests/unix.c
+++ b/glib/tests/unix.c
@@ -26,6 +26,7 @@
#include "glib-unix.h"
#include <string.h>
#include <pwd.h>
+#include <unistd.h>
static void
test_pipe (void)
@@ -52,6 +53,33 @@ test_pipe (void)
g_assert (g_str_has_prefix (buf, "hello"));
}
+static void
+test_pipe_stdio_overwrite (void)
+{
+ GError *error = NULL;
+ int pipefd[2], ret;
+ gboolean res;
+ int stderr_fd;
+
+ stderr_fd = dup (STDERR_FILENO);
+ g_assert_cmpint (stderr_fd, >, 0);
+ close (STDERR_FILENO);
+
+ res = g_unix_open_pipe (pipefd, FD_CLOEXEC, &error);
+ g_assert (res);
+ g_assert_no_error (error);
+
+ g_assert_cmpint (pipefd[0], ==, STDERR_FILENO);
+
+ close (pipefd[0]);
+ close (pipefd[1]);
+
+ ret = dup2 (stderr_fd, STDERR_FILENO);
+ g_assert_cmpint (ret, >=, 0);
+
+ close (stderr_fd);
+}
+
static void
test_error (void)
{
@@ -337,6 +365,7 @@ main (int argc,
g_test_init (&argc, &argv, NULL);
g_test_add_func ("/glib-unix/pipe", test_pipe);
+ g_test_add_func ("/glib-unix/pipe-stdio-overwrite", test_pipe_stdio_overwrite);
g_test_add_func ("/glib-unix/error", test_error);
g_test_add_func ("/glib-unix/nonblocking", test_nonblocking);
g_test_add_func ("/glib-unix/sighup", test_sighup);
--
GitLab

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0ab981618d1db47845e56417b0d7c123f81a3427b2b9c93f5a46ff5bbb964964
size 5189452

3
glib-2.74.3.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e9bc41ecd9690d9bc6a970cc7380119b828e5b6a4b16c393c638b3dc2b87cbcb
size 5181732

View File

@ -1,8 +1,8 @@
Index: glib-2.71.0/glib/gkeyfile.c
Index: glib-2.74.3/glib/gkeyfile.c
===================================================================
--- glib-2.71.0.orig/glib/gkeyfile.c
+++ glib-2.71.0/glib/gkeyfile.c
@@ -514,6 +514,7 @@ struct _GKeyFile
--- glib-2.74.3.orig/glib/gkeyfile.c
+++ glib-2.74.3/glib/gkeyfile.c
@@ -516,6 +516,7 @@ struct _GKeyFile
gboolean checked_locales; /* TRUE if @locales has been initialised */
gchar **locales; /* (nullable) */
gchar *gettext_domain;
@ -10,7 +10,7 @@ Index: glib-2.71.0/glib/gkeyfile.c
gint ref_count; /* (atomic) */
};
@@ -641,6 +642,7 @@ g_key_file_init (GKeyFile *key_file)
@@ -643,6 +644,7 @@ g_key_file_init (GKeyFile *key_file)
key_file->list_separator = ';';
key_file->flags = 0;
key_file->gettext_domain = NULL;
@ -18,7 +18,7 @@ Index: glib-2.71.0/glib/gkeyfile.c
}
static void
@@ -667,6 +669,12 @@ g_key_file_clear (GKeyFile *key_file)
@@ -669,6 +671,12 @@ g_key_file_clear (GKeyFile *key_file)
key_file->gettext_domain = NULL;
}
@ -31,7 +31,7 @@ Index: glib-2.71.0/glib/gkeyfile.c
tmp = key_file->groups;
while (tmp != NULL)
{
@@ -811,6 +819,39 @@ find_file_in_data_dirs (const gchar *f
@@ -813,6 +821,39 @@ find_file_in_data_dirs (const gchar *f
return fd;
}
@ -71,7 +71,7 @@ Index: glib-2.71.0/glib/gkeyfile.c
static gboolean
g_key_file_load_from_fd (GKeyFile *key_file,
gint fd,
@@ -892,6 +933,9 @@ g_key_file_load_from_fd (GKeyFile
@@ -894,6 +935,9 @@ g_key_file_load_from_fd (GKeyFile
G_KEY_FILE_DESKTOP_KEY_GETTEXT_DOMAIN,
NULL);
@ -81,7 +81,7 @@ Index: glib-2.71.0/glib/gkeyfile.c
return TRUE;
}
@@ -948,6 +992,8 @@ g_key_file_load_from_file (GKeyFile
@@ -950,6 +994,8 @@ g_key_file_load_from_file (GKeyFile
return FALSE;
}
@ -90,7 +90,7 @@ Index: glib-2.71.0/glib/gkeyfile.c
return TRUE;
}
@@ -1009,6 +1055,9 @@ g_key_file_load_from_data (GKeyFile
@@ -1011,6 +1057,9 @@ g_key_file_load_from_data (GKeyFile
G_KEY_FILE_DESKTOP_KEY_GETTEXT_DOMAIN,
NULL);
@ -100,7 +100,7 @@ Index: glib-2.71.0/glib/gkeyfile.c
return TRUE;
}
@@ -1113,6 +1162,9 @@ g_key_file_load_from_dirs (GKeyFile
@@ -1115,6 +1164,9 @@ g_key_file_load_from_dirs (GKeyFile
}
}
@ -110,7 +110,7 @@ Index: glib-2.71.0/glib/gkeyfile.c
if (found_file && full_path)
*full_path = output_path;
else
@@ -2320,14 +2372,40 @@ g_key_file_get_locale_string (GKeyFile
@@ -2322,14 +2374,40 @@ g_key_file_get_locale_string (GKeyFile
{
gboolean codeset_set;
const gchar *translated;
@ -156,11 +156,11 @@ Index: glib-2.71.0/glib/gkeyfile.c
g_free (orig_value);
Index: glib-2.71.0/glib/gkeyfile.h
Index: glib-2.74.3/glib/gkeyfile.h
===================================================================
--- glib-2.71.0.orig/glib/gkeyfile.h
+++ glib-2.71.0/glib/gkeyfile.h
@@ -320,7 +320,7 @@ gboolean g_key_file_remove_group
--- glib-2.74.3.orig/glib/gkeyfile.h
+++ glib-2.74.3/glib/gkeyfile.h
@@ -322,7 +322,7 @@ gboolean g_key_file_remove_group
#define G_KEY_FILE_DESKTOP_KEY_URL "URL"
#define G_KEY_FILE_DESKTOP_KEY_DBUS_ACTIVATABLE "DBusActivatable"
#define G_KEY_FILE_DESKTOP_KEY_ACTIONS "Actions"

View File

@ -1,3 +1,47 @@
-------------------------------------------------------------------
Fri Dec 2 21:18:15 UTC 2022 - Bjørn Lie <bjorn.lie@gmail.com>
- Update to version 2.74.3:
+ Fix regression in type checking `g_str_equal()` from C++
projects (glgo#GNOME/GLib#2820).
+ Bugs fixed:
- glgo#GNOME/GLib#2820 g_str_equal: New macro version breaks
compilation in C++ projects
- glgo#GNOME/GLib!3096 Backport !3094 “gstrfuncs: Fix
regression in C++ types accepted by g_str_equal()” to
glib-2-74
- Changes from version 2.74.2:
+ Fix GVariant type depths checks on text format variants.
+ Fix an obscure corner case with FD handling in g_spawn_*() when
a process has already closed the standard I/O FDs.
+ Fix regression in type checking on const arguments to
g_str_equal().
+ Bugs fixed: glgo#GNOME/GLib#2782 GVariant type depth not
checked on typedecls in text format variants.
glgo#GNOME/GLib#2795 [regression] gnome-keyring-daemon uses
100% CPU with glib-2.74.1.
glgo#GNOME/GLib#2799 Wrong GTask tag on error return path in
g_proxy_resolver_lookup_async().
glgo#GNOME/GLib#2809 g_str_equal switched to stricter API
(typing).
glgo#GNOME/GLib!3017 Backport !3008 “gio/gdesktopappinfo: Free
the wrapped argv array on launch failure” to glib-2-74.
glgo#GNOME/GLib!3038 Backport !3035 “portal: Fix broken header
guard” to glib-2-74.
glgo#GNOME/GLib!3039 Backport !3029 “Revert "Handling collision
between standard i/o file descriptors and newly created ones" ”
to glib-2-74.
glgo#GNOME/GLib!3046 Backport !3045 “gproxyresolver:
lookup_finish() should better parallel lookup_async()” to
glib-2-74.
glgo#GNOME/GLib!3063 Backport !3061 “gvariant-parser: Speed up
maybe_wrapper() by an order of magnitude” to glib-2-74.
glgo#GNOME/GLib!3084 Backport !3082 “gstrfuncs: Fix regression
in types accepted by g_str_equal()” to glib-2-74.
+ Updated translations.
- Drop ca905744.patch and a1151bc1.patch: Fixed upstream.
- Rebase patches with quilt.
-------------------------------------------------------------------
Mon Oct 31 15:17:35 UTC 2022 - Bjørn Lie <bjorn.lie@gmail.com>

View File

@ -30,7 +30,7 @@
%define libgthread libgthread-%{libver}
%bcond_without systemtap
Name: glib2%{psuffix}
Version: 2.74.1
Version: 2.74.3
Release: 0
Summary: General-Purpose Utility Library
License: LGPL-2.1-or-later
@ -58,10 +58,6 @@ Patch2: glib2-suppress-schema-deprecated-path-warning.patch
Patch3: glib2-dbus-socket-path.patch
# PATCH-FIX-OPENSUSE glib2-gdbus-codegen-version.patch olaf@aepfle.de -- Remove version string from files generated by gdbus-codegen
Patch4: glib2-gdbus-codegen-version.patch
# PATCH-FIX-UPSTREAM ca905744.patch dimstar@opensuse.org -- Revert "Handling collision between standard i/o file descriptors and newly created ones"
Patch5: https://gitlab.gnome.org/GNOME/glib/-/commit/ca905744.patch
# PATCH-FIX-UPSTREAM a1151bc1.patch -- gio/gdesktopappinfo: Free the wrapped argv array on launch failure
Patch6: https://gitlab.gnome.org/GNOME/glib/-/commit/a1151bc1.patch
BuildRequires: docbook-xsl-stylesheets
BuildRequires: fdupes
@ -265,8 +261,6 @@ the functionality of the installed glib2 package.
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
cp -a %{SOURCE1} %{SOURCE2} %{SOURCE5} .
cp -a %{SOURCE4} gnome_defaults.conf
# replace /usr/bin/env shebangs