libudev-monitor: add missing error checks in udev_monitor_enable_receiving()

This commit is contained in:
Yu Watanabe 2018-08-24 17:10:27 +09:00
parent a9808d8445
commit e38242b03a

View file

@ -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. * Returns: 0 on success, otherwise a negative error value.
*/ */
_public_ int udev_monitor_enable_receiving(struct udev_monitor *udev_monitor) _public_ int udev_monitor_enable_receiving(struct udev_monitor *udev_monitor) {
{
int err = 0;
const int on = 1; 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) { if (!udev_monitor->bound) {
err = bind(udev_monitor->sock, if (bind(udev_monitor->sock, &udev_monitor->snl.sa, sizeof(struct sockaddr_nl)) < 0)
&udev_monitor->snl.sa, sizeof(struct sockaddr_nl)); return log_debug_errno(errno, "Failed to bind udev monitor socket to event source: %m");
if (err == 0)
udev_monitor->bound = true; udev_monitor->bound = true;
} }
if (err >= 0) r = udev_monitor_set_nl_address(udev_monitor);
udev_monitor_set_nl_address(udev_monitor); if (r < 0)
else return log_debug_errno(r, "Failed to set address: %m");
return log_debug_errno(errno, "bind failed: %m");
/* enable receiving of sender credentials */ /* enable receiving of sender credentials */
err = setsockopt(udev_monitor->sock, SOL_SOCKET, SO_PASSCRED, &on, sizeof(on)); if (setsockopt(udev_monitor->sock, SOL_SOCKET, SO_PASSCRED, &on, sizeof(on)) < 0)
if (err < 0) return log_debug_errno(errno, "Failed to set socket option SO_PASSCRED: %m");
log_debug_errno(errno, "setting SO_PASSCRED failed: %m");
return 0; return 0;
} }