summaryrefslogtreecommitdiff
path: root/dbus
diff options
context:
space:
mode:
authorRalf Habacker <ralf.habacker@freenet.de>2023-01-03 14:29:14 +0100
committerRalf Habacker <ralf.habacker@freenet.de>2023-01-05 16:44:25 +0100
commit1741df3b977001aee6bee7c7458ed786c60c8eb7 (patch)
treeaffb2aa48f6c5a2d9bbc51c5b5012b7bf4dc55d2 /dbus
parent20febb522b3dd0b932244e48f50d2fcbb98c3b4f (diff)
downloaddbus-1741df3b977001aee6bee7c7458ed786c60c8eb7.tar.gz
Fix data race in multithreaded application
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
Diffstat (limited to 'dbus')
-rw-r--r--dbus/dbus-resources.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/dbus/dbus-resources.c b/dbus/dbus-resources.c
index 782cb452..7e1c3e55 100644
--- a/dbus/dbus-resources.c
+++ b/dbus/dbus-resources.c
@@ -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;
}
/**