summaryrefslogtreecommitdiff
path: root/src/libudev/libudev-monitor.c
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2018-08-24 17:10:27 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2018-09-11 12:45:21 +0900
commite38242b03ab740ed62469cf7a748ebb580270ac7 (patch)
treed3f96faa7fbfcb494cc1cbfd8b8f959bcfa72dc8 /src/libudev/libudev-monitor.c
parenta9808d844549fe4563e1ce373a75ebd17e35b72a (diff)
downloadsystemd-e38242b03ab740ed62469cf7a748ebb580270ac7.tar.gz
libudev-monitor: add missing error checks in udev_monitor_enable_receiving()
Diffstat (limited to 'src/libudev/libudev-monitor.c')
-rw-r--r--src/libudev/libudev-monitor.c31
1 files changed, 16 insertions, 15 deletions
diff --git a/src/libudev/libudev-monitor.c b/src/libudev/libudev-monitor.c
index c733340c5f..257621e050 100644
--- a/src/libudev/libudev-monitor.c
+++ b/src/libudev/libudev-monitor.c
@@ -334,29 +334,30 @@ int udev_monitor_allow_unicast_sender(struct udev_monitor *udev_monitor, struct
*
* Returns: 0 on success, otherwise a negative error value.
*/
-_public_ int udev_monitor_enable_receiving(struct udev_monitor *udev_monitor)
-{
- int err = 0;
+_public_ int udev_monitor_enable_receiving(struct udev_monitor *udev_monitor) {
const int on = 1;
+ int r;
- udev_monitor_filter_update(udev_monitor);
+ assert_return(udev_monitor, -EINVAL);
+
+ r = udev_monitor_filter_update(udev_monitor);
+ if (r < 0)
+ return log_debug_errno(r, "Failed to update filter: %m");
if (!udev_monitor->bound) {
- err = bind(udev_monitor->sock,
- &udev_monitor->snl.sa, sizeof(struct sockaddr_nl));
- if (err == 0)
- udev_monitor->bound = true;
+ if (bind(udev_monitor->sock, &udev_monitor->snl.sa, sizeof(struct sockaddr_nl)) < 0)
+ return log_debug_errno(errno, "Failed to bind udev monitor socket to event source: %m");
+
+ udev_monitor->bound = true;
}
- if (err >= 0)
- udev_monitor_set_nl_address(udev_monitor);
- else
- return log_debug_errno(errno, "bind failed: %m");
+ r = udev_monitor_set_nl_address(udev_monitor);
+ if (r < 0)
+ return log_debug_errno(r, "Failed to set address: %m");
/* enable receiving of sender credentials */
- err = setsockopt(udev_monitor->sock, SOL_SOCKET, SO_PASSCRED, &on, sizeof(on));
- if (err < 0)
- log_debug_errno(errno, "setting SO_PASSCRED failed: %m");
+ if (setsockopt(udev_monitor->sock, SOL_SOCKET, SO_PASSCRED, &on, sizeof(on)) < 0)
+ return log_debug_errno(errno, "Failed to set socket option SO_PASSCRED: %m");
return 0;
}