]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
dbus: Check eloop registration failure in add_watch handler
authorJouni Malinen <jouni@codeaurora.org>
Wed, 4 Nov 2020 17:39:08 +0000 (19:39 +0200)
committerJouni Malinen <j@w1.fi>
Wed, 4 Nov 2020 17:39:08 +0000 (19:39 +0200)
Report failures at lower layer to the upper layer D-Bus handling of
socket registration to allow failures to be addressed more cleanly.

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
wpa_supplicant/dbus/dbus_common.c

index efa6c7b2059517ee956ce198ba94f0b6041b63f8..a727217fd6f9bcdd158d767533d86b8e703ab20e 100644 (file)
@@ -108,17 +108,18 @@ static dbus_bool_t add_watch(DBusWatch *watch, void *data)
        flags = dbus_watch_get_flags(watch);
        fd = dbus_watch_get_unix_fd(watch);
 
-       eloop_register_sock(fd, EVENT_TYPE_EXCEPTION, process_watch_exception,
-                           priv, watch);
-
-       if (flags & DBUS_WATCH_READABLE) {
-               eloop_register_sock(fd, EVENT_TYPE_READ, process_watch_read,
-                                   priv, watch);
-       }
-       if (flags & DBUS_WATCH_WRITABLE) {
-               eloop_register_sock(fd, EVENT_TYPE_WRITE, process_watch_write,
-                                   priv, watch);
-       }
+       if (eloop_register_sock(fd, EVENT_TYPE_EXCEPTION,
+                               process_watch_exception, priv, watch) < 0)
+               return FALSE;
+
+       if ((flags & DBUS_WATCH_READABLE) &&
+           eloop_register_sock(fd, EVENT_TYPE_READ, process_watch_read,
+                               priv, watch) < 0)
+               return FALSE;
+       if ((flags & DBUS_WATCH_WRITABLE) &&
+           eloop_register_sock(fd, EVENT_TYPE_WRITE, process_watch_write,
+                               priv, watch) < 0)
+               return FALSE;
 
        dbus_watch_set_data(watch, priv, NULL);