]> git.ipfire.org Git - thirdparty/dbus.git/commitdiff
Fix data race in multithreaded application
authorRalf Habacker <ralf.habacker@freenet.de>
Tue, 3 Jan 2023 13:29:14 +0000 (14:29 +0100)
committerRalf Habacker <ralf.habacker@freenet.de>
Sat, 7 Jan 2023 09:31:45 +0000 (10:31 +0100)
This commit fixes a data race condition discovered by the
gcc thread sanitizer by also locking the associated mutex
when reading the corresponding counter.

Resolves: https://gitlab.freedesktop.org/dbus/dbus/-/issues/426
Signed-off-by: Ralf Habacker <ralf.habacker@freenet.de>
(cherry picked from commit 1741df3b977001aee6bee7c7458ed786c60c8eb7)

dbus/dbus-resources.c

index 9ed663ad5223631ee0b70e47f325638804c10447..97084a78c0a75f7e0ae78fcb30da811ee340b549 100644 (file)
@@ -273,7 +273,11 @@ _dbus_counter_adjust_unix_fd (DBusCounter *counter,
 long
 _dbus_counter_get_size_value (DBusCounter *counter)
 {
-  return counter->size_value;
+  long result;
+  _dbus_rmutex_lock (counter->mutex);
+  result = counter->size_value;
+  _dbus_rmutex_unlock (counter->mutex);
+  return result;
 }
 
 /**
@@ -285,7 +289,11 @@ _dbus_counter_get_size_value (DBusCounter *counter)
 long
 _dbus_counter_get_unix_fd_value (DBusCounter *counter)
 {
-  return counter->unix_fd_value;
+  long result;
+  _dbus_rmutex_lock (counter->mutex);
+  result = counter->unix_fd_value;
+  _dbus_rmutex_unlock (counter->mutex);
+  return result;
 }
 
 /**