diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2018-08-24 17:10:27 +0900 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2018-09-11 12:45:21 +0900 |
commit | e38242b03ab740ed62469cf7a748ebb580270ac7 (patch) | |
tree | d3f96faa7fbfcb494cc1cbfd8b8f959bcfa72dc8 /src/libudev/libudev-monitor.c | |
parent | a9808d844549fe4563e1ce373a75ebd17e35b72a (diff) | |
download | systemd-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.c | 31 |
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; } |