]> 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>
Thu, 5 Jan 2023 15:44:25 +0000 (16:44 +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.

Fixes #426

dbus/dbus-resources.c

index 782cb4528b76325d5af260fed2aca9f526ad1c33..7e1c3e55ab5be074c953cf1ebf7e77f942b13f88 100644 (file)
@@ -275,7 +275,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;
 }
 
 /**
@@ -287,7 +291,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;
 }
 
 /**