mirror of
https://github.com/systemd/systemd.git
synced 2025-03-09 12:58:26 +03:00
libudev-monitor: add missing error checks in udev_monitor_enable_receiving()
This commit is contained in:
parent
a9808d8445
commit
e38242b03a
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user