Compare commits
10 Commits
13e3cd1566
...
2e0da780c9
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2e0da780c9 | ||
|
|
d9ada1743f | ||
|
|
abc87b1b78 | ||
|
|
d373e98c26 | ||
|
|
dbd661116b | ||
|
|
8880c2b02a | ||
|
|
91d6869711 | ||
|
|
78e1214fb5 | ||
|
|
c524ada315 | ||
|
|
36987551ff |
35
Correct-translation-information.patch
Normal file
35
Correct-translation-information.patch
Normal file
@ -0,0 +1,35 @@
|
||||
From 69c3532fc9d677793a0e15f04651de7e1ef215ed Mon Sep 17 00:00:00 2001
|
||||
From: Guo Ce <guoce@kylinos.cn>
|
||||
Date: Thu, 24 Oct 2024 15:48:15 +0800
|
||||
Subject: [PATCH] Correct translation information
|
||||
|
||||
---
|
||||
.../desktop-files/usr/applications/org.gnome.clocks.desktop | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/gio/tests/desktop-files/usr/applications/org.gnome.clocks.desktop b/gio/tests/desktop-files/usr/applications/org.gnome.clocks.desktop
|
||||
index 92a6b35..f1ca091 100644
|
||||
--- a/gio/tests/desktop-files/usr/applications/org.gnome.clocks.desktop
|
||||
+++ b/gio/tests/desktop-files/usr/applications/org.gnome.clocks.desktop
|
||||
@@ -204,7 +204,7 @@ X-GNOME-FullName[th]=นาฬิกา GNOME
|
||||
X-GNOME-FullName[tr]=GNOME Saatleri
|
||||
X-GNOME-FullName[vi]=Đồng hồ GNOME
|
||||
X-GNOME-FullName[zh_CN]=GNOME 时钟
|
||||
-X-GNOME-FullName[zh_HK]=GNOME Clocks
|
||||
+X-GNOME-FullName[zh_HK]=GNOME 時鐘
|
||||
X-GNOME-FullName[zh_TW]=GNOME 時鐘
|
||||
X-GNOME-FullName[ug]=گىنوم سائەتلىرى
|
||||
X-GNOME-FullName=GNOME Clocks
|
||||
@@ -398,7 +398,8 @@ X-Geoclue-Reason[sv]=Låter världsklockor visas för din tidszon.
|
||||
X-Geoclue-Reason[th]=เพื่อให้สามารถแสดงนาฬิกาทั่วโลกสำหรับเขตเวลาของคุณ
|
||||
X-Geoclue-Reason[tr]=Saat diliminiz için dünya saatlerinin gösterilmesine olanak tanır.
|
||||
X-Geoclue-Reason[vi]=Cho phép các đồng hồ thế giới hiển thị cho múi giờ của bạn.
|
||||
-X-Geoclue-Reason[zh_CN]=允许为您的时区显示世界时钟
|
||||
+X-Geoclue-Reason[zh_CN]=允许为您的时区显示世界时钟。
|
||||
+X-Geoclue-Reason[zh_HK]=允許為您的時區顯示世界時鐘。
|
||||
X-Geoclue-Reason[zh_TW]=允許為您的時區顯示世界時鐘。
|
||||
X-Geoclue-Reason=Allows world clocks to be displayed for your time zone.
|
||||
X-Flatpak=org.gnome.clocks
|
||||
--
|
||||
2.37.1
|
||||
|
||||
3255
backport-CVE-2024-34397.patch
Normal file
3255
backport-CVE-2024-34397.patch
Normal file
File diff suppressed because it is too large
Load Diff
44
backport-CVE-2024-52533.patch
Normal file
44
backport-CVE-2024-52533.patch
Normal file
@ -0,0 +1,44 @@
|
||||
From 25833cefda24c60af913d6f2d532b5afd608b821 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Catanzaro <mcatanzaro@redhat.com>
|
||||
Date: Thu, 19 Sep 2024 18:35:53 +0100
|
||||
Subject: [PATCH] gsocks4aproxy: Fix a single byte buffer overflow in connect
|
||||
messages
|
||||
|
||||
`SOCKS4_CONN_MSG_LEN` failed to account for the length of the final nul
|
||||
byte in the connect message, which is an addition in SOCKSv4a vs
|
||||
SOCKSv4.
|
||||
|
||||
This means that the buffer for building and transmitting the connect
|
||||
message could be overflowed if the username and hostname are both
|
||||
`SOCKS4_MAX_LEN` (255) bytes long.
|
||||
|
||||
Proxy configurations are normally statically configured, so the username
|
||||
is very unlikely to be near its maximum length, and hence this overflow
|
||||
is unlikely to be triggered in practice.
|
||||
|
||||
(Commit message by Philip Withnall, diagnosis and fix by Michael
|
||||
Catanzaro.)
|
||||
|
||||
Fixes: #3461
|
||||
---
|
||||
gio/gsocks4aproxy.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/gio/gsocks4aproxy.c b/gio/gsocks4aproxy.c
|
||||
index 3dad118eb7..b3146d08fd 100644
|
||||
--- a/gio/gsocks4aproxy.c
|
||||
+++ b/gio/gsocks4aproxy.c
|
||||
@@ -79,9 +79,9 @@ g_socks4a_proxy_init (GSocks4aProxy *proxy)
|
||||
* +----+----+----+----+----+----+----+----+----+----+....+----+------+....+------+
|
||||
* | VN | CD | DSTPORT | DSTIP | USERID |NULL| HOST | | NULL |
|
||||
* +----+----+----+----+----+----+----+----+----+----+....+----+------+....+------+
|
||||
- * 1 1 2 4 variable 1 variable
|
||||
+ * 1 1 2 4 variable 1 variable 1
|
||||
*/
|
||||
-#define SOCKS4_CONN_MSG_LEN (9 + SOCKS4_MAX_LEN * 2)
|
||||
+#define SOCKS4_CONN_MSG_LEN (10 + SOCKS4_MAX_LEN * 2)
|
||||
static gint
|
||||
set_connect_msg (guint8 *msg,
|
||||
const gchar *hostname,
|
||||
--
|
||||
GitLab
|
||||
@ -0,0 +1,59 @@
|
||||
From c1ddca0955619cab194be2b22915c562e94f8852 Mon Sep 17 00:00:00 2001
|
||||
From: Simon McVittie <smcv@collabora.com>
|
||||
Date: Wed, 8 May 2024 14:46:08 +0000
|
||||
Subject: [PATCH] gdbusconnection: Allow name owners to have the syntax of a
|
||||
well-known name
|
||||
|
||||
In a D-Bus-Specification-compliant message bus, the owner of a well-known
|
||||
name is a unique name. However, ibus has its own small implementation
|
||||
of a message bus (src/ibusbus.c) in which org.freedesktop.IBus is
|
||||
special-cased to also have itself as its owner (like org.freedesktop.DBus
|
||||
on a standard message bus), and connects to that bus with the
|
||||
G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION flag. The ability to do
|
||||
this regressed when CVE-2024-34397 was fixed.
|
||||
|
||||
Relax the checks to allow the owner of a well-known name to be any valid
|
||||
D-Bus name, even if it is not syntactically a unique name.
|
||||
|
||||
Fixes: 683b14b9 "gdbus: Track name owners for signal subscriptions"
|
||||
Resolves: https://gitlab.gnome.org/GNOME/glib/-/issues/3353
|
||||
Bug-Debian: https://bugs.debian.org/1070730
|
||||
Bug-Debian: https://bugs.debian.org/1070736
|
||||
Bug-Debian: https://bugs.debian.org/1070743
|
||||
Bug-Debian: https://bugs.debian.org/1070745
|
||||
Signed-off-by: Simon McVittie <smcv@debian.org>
|
||||
---
|
||||
gio/gdbusconnection.c | 10 ++++++++--
|
||||
1 file changed, 8 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/gio/gdbusconnection.c b/gio/gdbusconnection.c
|
||||
index 782caff0aa..bd0cd1b0eb 100644
|
||||
--- a/gio/gdbusconnection.c
|
||||
+++ b/gio/gdbusconnection.c
|
||||
@@ -2402,7 +2402,10 @@ name_watcher_deliver_name_owner_changed_unlocked (SignalData *name_watcher,
|
||||
/* Our caller already checked this */
|
||||
g_assert (g_strcmp0 (name_watcher->arg0, name) == 0);
|
||||
|
||||
- if (G_LIKELY (new_owner[0] == '\0' || g_dbus_is_unique_name (new_owner)))
|
||||
+ /* FIXME: This should be validating that `new_owner` is a unique name,
|
||||
+ * but IBus’ implementation of a message bus is not compliant with the spec.
|
||||
+ * See https://gitlab.gnome.org/GNOME/glib/-/issues/3353 */
|
||||
+ if (G_LIKELY (new_owner[0] == '\0' || g_dbus_is_name (new_owner)))
|
||||
name_watcher_set_name_owner_unlocked (name_watcher, new_owner);
|
||||
else
|
||||
g_warning ("Received NameOwnerChanged signal with invalid owner \"%s\" for \"%s\"",
|
||||
@@ -2454,7 +2457,10 @@ name_watcher_deliver_get_name_owner_reply_unlocked (SignalData *name_watcher,
|
||||
|
||||
g_variant_get (body, "(&s)", &new_owner);
|
||||
|
||||
- if (G_LIKELY (g_dbus_is_unique_name (new_owner)))
|
||||
+ /* FIXME: This should be validating that `new_owner` is a unique name,
|
||||
+ * but IBus’ implementation of a message bus is not compliant with the spec.
|
||||
+ * See https://gitlab.gnome.org/GNOME/glib/-/issues/3353 */
|
||||
+ if (G_LIKELY (g_dbus_is_name (new_owner)))
|
||||
name_watcher_set_name_owner_unlocked (name_watcher, new_owner);
|
||||
else
|
||||
g_warning ("Received GetNameOwner reply with invalid owner \"%s\" for \"%s\"",
|
||||
--
|
||||
GitLab
|
||||
|
||||
@ -0,0 +1,271 @@
|
||||
From 222f6ceada3c54cddf1cfa7a3b846716bafe244c Mon Sep 17 00:00:00 2001
|
||||
From: Benjamin Berg <bberg@redhat.com>
|
||||
Date: Fri, 18 Mar 2022 12:16:12 +0100
|
||||
Subject: [PATCH 1/3] glocalfilemonitor: Avoid file monitor destruction from
|
||||
event thread
|
||||
|
||||
Taking a reference to the GFileMonitor when handling events may cause
|
||||
object destruction from th worker thread that calls the function. This
|
||||
condition happens if the surrounding code drops the otherwise last
|
||||
reference ot the GFileMonitor. The series of events causes destruction
|
||||
from an unrelated worker thread and also triggers g_file_monitor_cancel
|
||||
to be called from g_file_monitor_source_handle_event.
|
||||
|
||||
For the inotify backend, this results in a deadlock as cancellation
|
||||
needs to take a lock that protects data structures from being modified
|
||||
while events are dispatched.
|
||||
|
||||
One alternative to this approach might be to add an RCU (release, copy,
|
||||
update) approach to the lists contained in the wd_dir_hash and
|
||||
wd_file_hash hash tables.
|
||||
|
||||
Fixes: #1941
|
||||
|
||||
An example stack trace of this happening is:
|
||||
|
||||
Thread 2 (Thread 0x7fea68b1d640 (LWP 260961) "gmain"):
|
||||
#0 syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
|
||||
#1 0x00007fea692215dc in g_mutex_lock_slowpath (mutex=mutex@entry=0x7fea6911e148 <g.inotify_lock_lock>) at ../glib/gthread-posix.c:1493
|
||||
#2 0x00007fea69222062 in g_mutex_lock (mutex=mutex@entry=0x7fea6911e148 <g.inotify_lock_lock>) at ../glib/gthread-posix.c:1517
|
||||
#3 0x00007fea6908025a in _ih_sub_cancel (sub=0x1492620) at ../gio/inotify/inotify-helper.c:131
|
||||
#4 0x00007fea6907f9da in g_inotify_file_monitor_cancel (monitor=0x14a3550) at ../gio/inotify/ginotifyfilemonitor.c:75
|
||||
#5 0x00007fea68fae959 in g_file_monitor_cancel (monitor=0x14a3550) at ../gio/gfilemonitor.c:241
|
||||
#6 0x00007fea68fae9dc in g_file_monitor_dispose (object=0x14a3550) at ../gio/gfilemonitor.c:123
|
||||
#7 0x00007fea69139341 in g_object_unref (_object=<optimized out>) at ../gobject/gobject.c:3636
|
||||
#8 g_object_unref (_object=0x14a3550) at ../gobject/gobject.c:3553
|
||||
#9 0x00007fea6907507a in g_file_monitor_source_handle_event (fms=0x14c3560, event_type=<optimized out>, child=0x7fea64001460 "spawned-1", rename_to=rename_to@entry=0x0, other=other@entry=0x0, event_time=<optimized out>) at ../gio/glocalfilemonitor.c:457
|
||||
#10 0x00007fea6907fe0e in ih_event_callback (event=0x7fea64001420, sub=0x1492620, file_event=<optimized out>) at ../gio/inotify/inotify-helper.c:218
|
||||
#11 0x00007fea6908075c in ip_event_dispatch (dir_list=dir_list@entry=0x14c14c0, file_list=0x0, event=event@entry=0x7fea64001420) at ../gio/inotify/inotify-path.c:493
|
||||
#12 0x00007fea6908094e in ip_event_dispatch (event=0x7fea64001420, file_list=<optimized out>, dir_list=0x14c14c0) at ../gio/inotify/inotify-path.c:448
|
||||
#13 ip_event_callback (event=0x7fea64001420) at ../gio/inotify/inotify-path.c:548
|
||||
#14 ip_event_callback (event=0x7fea64001420) at ../gio/inotify/inotify-path.c:530
|
||||
#15 0x00007fea69081391 in ik_source_dispatch (source=0x14a2bf0, func=0x7fea69080890 <ip_event_callback>, user_data=<optimized out>) at ../gio/inotify/inotify-kernel.c:327
|
||||
#16 0x00007fea691d0824 in g_main_dispatch (context=0x14a2cc0) at ../glib/gmain.c:3417
|
||||
#17 g_main_context_dispatch (context=0x14a2cc0) at ../glib/gmain.c:4135
|
||||
#18 0x00007fea691d0b88 in g_main_context_iterate (context=context@entry=0x14a2cc0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4211
|
||||
#19 0x00007fea691d0c2f in g_main_context_iteration (context=0x14a2cc0, may_block=may_block@entry=1) at ../glib/gmain.c:4276
|
||||
#20 0x00007fea691d0c81 in glib_worker_main (data=<optimized out>) at ../glib/gmain.c:6176
|
||||
#21 0x00007fea691f9c2d in g_thread_proxy (data=0x1487cc0) at ../glib/gthread.c:827
|
||||
#22 0x00007fea68d93b1a in start_thread (arg=<optimized out>) at pthread_create.c:443
|
||||
#23 0x00007fea68e18650 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
|
||||
---
|
||||
gio/glocalfilemonitor.c | 14 +++++---------
|
||||
1 file changed, 5 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/gio/glocalfilemonitor.c b/gio/glocalfilemonitor.c
|
||||
index 4f85fea522..f408d07076 100644
|
||||
--- a/gio/glocalfilemonitor.c
|
||||
+++ b/gio/glocalfilemonitor.c
|
||||
@@ -348,7 +348,6 @@ g_file_monitor_source_handle_event (GFileMonitorSource *fms,
|
||||
gint64 event_time)
|
||||
{
|
||||
gboolean interesting = TRUE;
|
||||
- GFileMonitor *instance = NULL;
|
||||
|
||||
g_assert (!child || is_basename (child));
|
||||
g_assert (!rename_to || is_basename (rename_to));
|
||||
@@ -359,13 +358,11 @@ g_file_monitor_source_handle_event (GFileMonitorSource *fms,
|
||||
|
||||
g_mutex_lock (&fms->lock);
|
||||
|
||||
- /* monitor is already gone -- don't bother */
|
||||
- instance = g_weak_ref_get (&fms->instance_ref);
|
||||
- if (instance == NULL)
|
||||
- {
|
||||
- g_mutex_unlock (&fms->lock);
|
||||
- return TRUE;
|
||||
- }
|
||||
+ /* NOTE: We process events even if the file monitor has already been disposed.
|
||||
+ * The reason is that we must not take a reference to the instance here
|
||||
+ * as destroying it from the event handling thread will lead to a
|
||||
+ * deadlock when taking the lock in _ih_sub_cancel.
|
||||
+ */
|
||||
|
||||
switch (event_type)
|
||||
{
|
||||
@@ -452,7 +449,6 @@ g_file_monitor_source_handle_event (GFileMonitorSource *fms,
|
||||
g_file_monitor_source_update_ready_time (fms);
|
||||
|
||||
g_mutex_unlock (&fms->lock);
|
||||
- g_clear_object (&instance);
|
||||
|
||||
return interesting;
|
||||
}
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
From 57bde3c9bda9cfdf1e55fd6ddc1c354bde1ee654 Mon Sep 17 00:00:00 2001
|
||||
From: Philip Withnall <pwithnall@endlessos.org>
|
||||
Date: Mon, 30 May 2022 17:54:18 +0100
|
||||
Subject: [PATCH 2/3] glocalfilemonitor: Skip event handling if the source has
|
||||
been destroyed
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This should prevent unbounded growth of the `event_queue` in the
|
||||
unlikely case that the `GSource` is removed from its `GMainContext` and
|
||||
destroyed separately from the `GFileMonitor`.
|
||||
|
||||
I’m not sure if that can currently happen, but it could with future
|
||||
refactoring, so it’s best to address the possibility now while we’re
|
||||
thinking about this bit of code.
|
||||
|
||||
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
|
||||
|
||||
Helps: #1941
|
||||
---
|
||||
gio/glocalfilemonitor.c | 29 +++++++++++++++++++++++------
|
||||
1 file changed, 23 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/gio/glocalfilemonitor.c b/gio/glocalfilemonitor.c
|
||||
index f408d07076..68afd7b51c 100644
|
||||
--- a/gio/glocalfilemonitor.c
|
||||
+++ b/gio/glocalfilemonitor.c
|
||||
@@ -358,11 +358,28 @@ g_file_monitor_source_handle_event (GFileMonitorSource *fms,
|
||||
|
||||
g_mutex_lock (&fms->lock);
|
||||
|
||||
- /* NOTE: We process events even if the file monitor has already been disposed.
|
||||
- * The reason is that we must not take a reference to the instance here
|
||||
- * as destroying it from the event handling thread will lead to a
|
||||
- * deadlock when taking the lock in _ih_sub_cancel.
|
||||
+ /* NOTE:
|
||||
+ *
|
||||
+ * We process events even if the file monitor has already been disposed.
|
||||
+ * The reason is that we must not take a reference to the instance here as
|
||||
+ * destroying it from the event handling thread will lead to a deadlock when
|
||||
+ * taking the lock in _ih_sub_cancel.
|
||||
+ *
|
||||
+ * This results in seemingly-unbounded growth of the `event_queue` with the
|
||||
+ * calls to `g_file_monitor_source_queue_event()`. However, each of those sets
|
||||
+ * the ready time on the #GSource, which means that it will be dispatched in
|
||||
+ * a subsequent iteration of the #GMainContext it’s attached to. At that
|
||||
+ * point, `g_file_monitor_source_dispatch()` will return %FALSE, and this will
|
||||
+ * trigger finalisation of the source. That will clear the `event_queue`.
|
||||
+ *
|
||||
+ * If the source is no longer attached, this will return early to prevent
|
||||
+ * unbounded queueing.
|
||||
*/
|
||||
+ if (g_source_is_destroyed ((GSource *) fms))
|
||||
+ {
|
||||
+ g_mutex_unlock (&fms->lock);
|
||||
+ return TRUE;
|
||||
+ }
|
||||
|
||||
switch (event_type)
|
||||
{
|
||||
@@ -595,9 +612,9 @@ g_file_monitor_source_dispose (GFileMonitorSource *fms)
|
||||
|
||||
g_file_monitor_source_update_ready_time (fms);
|
||||
|
||||
- g_mutex_unlock (&fms->lock);
|
||||
-
|
||||
g_source_destroy ((GSource *) fms);
|
||||
+
|
||||
+ g_mutex_unlock (&fms->lock);
|
||||
}
|
||||
|
||||
static void
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
From 1fc6a5c9b6a2b620ac4370d64c558f9b33aff063 Mon Sep 17 00:00:00 2001
|
||||
From: Philip Withnall <pwithnall@endlessos.org>
|
||||
Date: Mon, 30 May 2022 17:55:43 +0100
|
||||
Subject: [PATCH 3/3] tests: Add a test for GFileMonitor deadlocks
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This test is opportunistic in that it’s not possible to detect whether
|
||||
the race condition has been hit (other than by hitting a deadlock).
|
||||
|
||||
So the only approach we can take for testing is to loop over the code
|
||||
which has previously been known to cause a deadlock a number of times.
|
||||
|
||||
The number of repetitions is chosen from running the test with the
|
||||
deadlock fix reverted.
|
||||
|
||||
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
|
||||
|
||||
Helps: #1941
|
||||
---
|
||||
gio/tests/testfilemonitor.c | 52 +++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 52 insertions(+)
|
||||
|
||||
diff --git a/gio/tests/testfilemonitor.c b/gio/tests/testfilemonitor.c
|
||||
index a47aeab386..082f0db26f 100644
|
||||
--- a/gio/tests/testfilemonitor.c
|
||||
+++ b/gio/tests/testfilemonitor.c
|
||||
@@ -1036,6 +1036,57 @@ test_file_hard_links (Fixture *fixture,
|
||||
g_object_unref (data.output_stream);
|
||||
}
|
||||
|
||||
+static void
|
||||
+test_finalize_in_callback (Fixture *fixture,
|
||||
+ gconstpointer user_data)
|
||||
+{
|
||||
+ GFile *file = NULL;
|
||||
+ guint i;
|
||||
+
|
||||
+ g_test_summary ("Test that finalization of a GFileMonitor in one of its "
|
||||
+ "callbacks doesn’t cause a deadlock.");
|
||||
+ g_test_bug ("https://gitlab.gnome.org/GNOME/glib/-/issues/1941");
|
||||
+
|
||||
+ file = g_file_get_child (fixture->tmp_dir, "race-file");
|
||||
+
|
||||
+ for (i = 0; i < 50; i++)
|
||||
+ {
|
||||
+ GFileMonitor *monitor = NULL;
|
||||
+ GError *local_error = NULL;
|
||||
+
|
||||
+ /* Monitor the file. */
|
||||
+ monitor = g_file_monitor_file (file, G_FILE_MONITOR_NONE, NULL, &local_error);
|
||||
+ g_assert_no_error (local_error);
|
||||
+ g_assert_nonnull (monitor);
|
||||
+
|
||||
+ /* Create the file. */
|
||||
+ g_file_replace_contents (file, "hello", 5, NULL, FALSE,
|
||||
+ G_FILE_CREATE_NONE, NULL, NULL, &local_error);
|
||||
+ g_assert_no_error (local_error);
|
||||
+
|
||||
+ /* Immediately drop the last ref to the monitor in the hope that this
|
||||
+ * happens in the middle of the critical section in
|
||||
+ * g_file_monitor_source_handle_event(), so that any cleanup at the end
|
||||
+ * of that function is done with a now-finalised file monitor. */
|
||||
+ g_object_unref (monitor);
|
||||
+
|
||||
+ /* Re-create the monitor and do the same again for deleting the file, to
|
||||
+ * give a second chance at hitting the race condition. */
|
||||
+ monitor = g_file_monitor_file (file, G_FILE_MONITOR_NONE, NULL, &local_error);
|
||||
+ g_assert_no_error (local_error);
|
||||
+ g_assert_nonnull (monitor);
|
||||
+
|
||||
+ /* Delete the file. */
|
||||
+ g_file_delete (file, NULL, &local_error);
|
||||
+ g_assert_no_error (local_error);
|
||||
+
|
||||
+ /* Drop the ref again. */
|
||||
+ g_object_unref (monitor);
|
||||
+ }
|
||||
+
|
||||
+ g_object_unref (file);
|
||||
+}
|
||||
+
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
@@ -1047,6 +1098,7 @@ main (int argc, char *argv[])
|
||||
g_test_add ("/monitor/dir-not-existent", Fixture, NULL, setup, test_dir_non_existent, teardown);
|
||||
g_test_add ("/monitor/cross-dir-moves", Fixture, NULL, setup, test_cross_dir_moves, teardown);
|
||||
g_test_add ("/monitor/file/hard-links", Fixture, NULL, setup, test_file_hard_links, teardown);
|
||||
+ g_test_add ("/monitor/finalize-in-callback", Fixture, NULL, setup, test_finalize_in_callback, teardown);
|
||||
|
||||
return g_test_run ();
|
||||
}
|
||||
--
|
||||
GitLab
|
||||
|
||||
25
gio-fix-filesystem-type-ext-err.patch
Normal file
25
gio-fix-filesystem-type-ext-err.patch
Normal file
@ -0,0 +1,25 @@
|
||||
From 901711c799f67a62739edf07312aa12aecd6e334 Mon Sep 17 00:00:00 2001
|
||||
From: litenglong <litenglong@kylinos.cn>
|
||||
Date: Wed, 23 Oct 2024 15:44:27 +0800
|
||||
Subject: [PATCH] gio fix filesystem type ext err
|
||||
|
||||
---
|
||||
gio/glocalfile.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/gio/glocalfile.c b/gio/glocalfile.c
|
||||
index dbb5690..9e01547 100644
|
||||
--- a/gio/glocalfile.c
|
||||
+++ b/gio/glocalfile.c
|
||||
@@ -637,7 +637,7 @@ get_fs_type (long f_type)
|
||||
case 0xEF51:
|
||||
return "ext2";
|
||||
case 0xEF53:
|
||||
- return "ext3/ext4";
|
||||
+ return "ext2/ext3/ext4";
|
||||
case 0xF2F52010:
|
||||
return "f2fs";
|
||||
case 0x65735546:
|
||||
--
|
||||
2.25.1
|
||||
|
||||
23
glib2.spec
23
glib2.spec
@ -1,12 +1,13 @@
|
||||
Name: glib2
|
||||
Version: 2.66.8
|
||||
Release: 12
|
||||
Release: 17
|
||||
Summary: The core library that forms the basis for projects such as GTK+ and GNOME
|
||||
License: LGPLv2+
|
||||
URL: http://www.gtk.org
|
||||
Source0: http://download.gnome.org/sources/glib/2.66/glib-%{version}.tar.xz
|
||||
|
||||
Patch9001: fix-accidentally-delete-temp-file-within-dtrace.patch
|
||||
Patch9002: gio-fix-filesystem-type-ext-err.patch
|
||||
|
||||
Patch6001: backport-gsocketclient-set-IP-BIND-ADDRESS-NO-PORT-if-binding.patch
|
||||
Patch6002: backport-gsocketclient-emit-RESOLVING-RESOLVED-events-only-once.patch
|
||||
@ -70,6 +71,11 @@ Patch6059: backport-Implement-GFileIface.set_display_name-for-resource-file
|
||||
patch6060: backport-gdbusinterfaceskeleton-Fix-a-use-after-free-of-a-GDBusMethodInvocation.patch
|
||||
patch6061: backport-CVE-2023-24593_CVE-2023-25180-1.patch
|
||||
patch6062: backport-CVE-2023-24593_CVE-2023-25180-2.patch
|
||||
patch6063: backport-glocalfilemonitor-Avoid-file-monitor-destruction-from-event-thread.patch
|
||||
patch6064: backport-CVE-2024-34397.patch
|
||||
patch6065: backport-gdbusconnection-Allow-name-owners-to-have-the-syntax-of-a-well-known-name.patch
|
||||
Patch6066: Correct-translation-information.patch
|
||||
Patch6067: backport-CVE-2024-52533.patch
|
||||
|
||||
BuildRequires: chrpath gcc gcc-c++ gettext perl-interpreter
|
||||
%ifnarch i686
|
||||
@ -242,6 +248,21 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Tue Nov 12 2024 liningjie <liningjie@xfusion.com> - 2.66.8-17
|
||||
- Fix CVE-2024-52533
|
||||
|
||||
* Fri Oct 25 2024 GuoCe <guoce@kylinos.cn> - 2.66.8-16
|
||||
- Correct translation information
|
||||
|
||||
* Thu Oct 24 2024 litenglong <litenglong@kylinos.cn> - 2.66.8-15
|
||||
- fix filesystem type ext err
|
||||
|
||||
* Wed Jun 19 2024 hanhuihui <hanhuihui5@huawei.com> - 2.66.8-14
|
||||
- fix CVE-2024-34397
|
||||
|
||||
* Mon Sep 25 2023 liningjie <liningjie@xfusion.com> - 2.66.8-13
|
||||
- glocalfilemonitor: Avoid file monitor destruction from event thread
|
||||
|
||||
* Sat Apr 1 2023 hanhuihui <hanhuihui5@huawei.com> - 2.66.8-12
|
||||
- fix CVE-2023-24593 and CVE-2023-25180
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user