diff --git a/src/basic/socket-label.c b/src/basic/socket-label.c index 2698d59aea..470bde5145 100644 --- a/src/basic/socket-label.c +++ b/src/basic/socket-label.c @@ -62,10 +62,9 @@ int socket_address_listen( return r; if (socket_address_family(a) == AF_INET6 && only != SOCKET_ADDRESS_DEFAULT) { - int flag = only == SOCKET_ADDRESS_IPV6_ONLY; - - if (setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &flag, sizeof(flag)) < 0) - return -errno; + r = setsockopt_int(fd, IPPROTO_IPV6, IPV6_V6ONLY, only == SOCKET_ADDRESS_IPV6_ONLY); + if (r < 0) + return r; } if (IN_SET(socket_address_family(a), AF_INET, AF_INET6)) { @@ -74,23 +73,27 @@ int socket_address_listen( return -errno; if (reuse_port) { - if (setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &const_int_one, sizeof(const_int_one)) < 0) - log_warning_errno(errno, "SO_REUSEPORT failed: %m"); + r = setsockopt_int(fd, SOL_SOCKET, SO_REUSEPORT, true); + if (r < 0) + log_warning_errno(r, "SO_REUSEPORT failed: %m"); } if (free_bind) { - if (setsockopt(fd, IPPROTO_IP, IP_FREEBIND, &const_int_one, sizeof(const_int_one)) < 0) - log_warning_errno(errno, "IP_FREEBIND failed: %m"); + r = setsockopt_int(fd, IPPROTO_IP, IP_FREEBIND, true); + if (r < 0) + log_warning_errno(r, "IP_FREEBIND failed: %m"); } if (transparent) { - if (setsockopt(fd, IPPROTO_IP, IP_TRANSPARENT, &const_int_one, sizeof(const_int_one)) < 0) - log_warning_errno(errno, "IP_TRANSPARENT failed: %m"); + r = setsockopt_int(fd, IPPROTO_IP, IP_TRANSPARENT, true); + if (r < 0) + log_warning_errno(r, "IP_TRANSPARENT failed: %m"); } } - if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof(const_int_one)) < 0) - return -errno; + r = setsockopt_int(fd, SOL_SOCKET, SO_REUSEADDR, true); + if (r < 0) + return r; p = socket_address_get_path(a); if (p) { diff --git a/src/basic/socket-util.h b/src/basic/socket-util.h index d2e00f2f64..8090e21657 100644 --- a/src/basic/socket-util.h +++ b/src/basic/socket-util.h @@ -190,3 +190,10 @@ struct cmsghdr* cmsg_find(struct msghdr *mh, int level, int type, socklen_t leng int socket_ioctl_fd(void); int sockaddr_un_set_path(struct sockaddr_un *ret, const char *path); + +static inline int setsockopt_int(int fd, int level, int optname, int value) { + if (setsockopt(fd, level, optname, &value, sizeof(value)) < 0) + return -errno; + + return 0; +} diff --git a/src/core/manager.c b/src/core/manager.c index 62703e1d7f..d0cba79153 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -900,9 +900,9 @@ static int manager_setup_notify(Manager *m) { if (r < 0) return log_error_errno(errno, "bind(%s) failed: %m", m->notify_socket); - r = setsockopt(fd, SOL_SOCKET, SO_PASSCRED, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(fd, SOL_SOCKET, SO_PASSCRED, true); if (r < 0) - return log_error_errno(errno, "SO_PASSCRED failed: %m"); + return log_error_errno(r, "SO_PASSCRED failed: %m"); m->notify_fd = TAKE_FD(fd); diff --git a/src/core/socket.c b/src/core/socket.c index f0f6a83a19..ee802002f5 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -1014,8 +1014,9 @@ static void socket_apply_socket_options(Socket *s, int fd) { assert(fd >= 0); if (s->keep_alive) { - if (setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &const_int_one, sizeof(const_int_one)) < 0) - log_unit_warning_errno(UNIT(s), errno, "SO_KEEPALIVE failed: %m"); + r = setsockopt_int(fd, SOL_SOCKET, SO_KEEPALIVE, true); + if (r < 0) + log_unit_warning_errno(UNIT(s), r, "SO_KEEPALIVE failed: %m"); } if (s->keep_alive_time > 0) { @@ -1044,27 +1045,32 @@ static void socket_apply_socket_options(Socket *s, int fd) { if (s->no_delay) { if (s->socket_protocol == IPPROTO_SCTP) { - if (setsockopt(fd, SOL_SCTP, SCTP_NODELAY, &const_int_one, sizeof(const_int_one)) < 0) - log_unit_warning_errno(UNIT(s), errno, "SCTP_NODELAY failed: %m"); + r = setsockopt_int(fd, SOL_SCTP, SCTP_NODELAY, true); + if (r < 0) + log_unit_warning_errno(UNIT(s), r, "SCTP_NODELAY failed: %m"); } else { - if (setsockopt(fd, SOL_TCP, TCP_NODELAY, &const_int_one, sizeof(const_int_one)) < 0) - log_unit_warning_errno(UNIT(s), errno, "TCP_NODELAY failed: %m"); + r = setsockopt_int(fd, SOL_TCP, TCP_NODELAY, true); + if (r < 0) + log_unit_warning_errno(UNIT(s), r, "TCP_NODELAY failed: %m"); } } if (s->broadcast) { - if (setsockopt(fd, SOL_SOCKET, SO_BROADCAST, &const_int_one, sizeof(const_int_one)) < 0) - log_unit_warning_errno(UNIT(s), errno, "SO_BROADCAST failed: %m"); + r = setsockopt_int(fd, SOL_SOCKET, SO_BROADCAST, true); + if (r < 0) + log_unit_warning_errno(UNIT(s), r, "SO_BROADCAST failed: %m"); } if (s->pass_cred) { - if (setsockopt(fd, SOL_SOCKET, SO_PASSCRED, &const_int_one, sizeof(const_int_one)) < 0) - log_unit_warning_errno(UNIT(s), errno, "SO_PASSCRED failed: %m"); + r = setsockopt_int(fd, SOL_SOCKET, SO_PASSCRED, true); + if (r < 0) + log_unit_warning_errno(UNIT(s), r, "SO_PASSCRED failed: %m"); } if (s->pass_sec) { - if (setsockopt(fd, SOL_SOCKET, SO_PASSSEC, &const_int_one, sizeof(const_int_one)) < 0) - log_unit_warning_errno(UNIT(s), errno, "SO_PASSSEC failed: %m"); + r = setsockopt_int(fd, SOL_SOCKET, SO_PASSSEC, true); + if (r < 0) + log_unit_warning_errno(UNIT(s), r, "SO_PASSSEC failed: %m"); } if (s->priority >= 0) diff --git a/src/import/importd.c b/src/import/importd.c index 7dd00b7545..57190e5de5 100644 --- a/src/import/importd.c +++ b/src/import/importd.c @@ -612,8 +612,9 @@ static int manager_new(Manager **ret) { if (bind(m->notify_fd, &sa.sa, SOCKADDR_UN_LEN(sa.un)) < 0) return -errno; - if (setsockopt(m->notify_fd, SOL_SOCKET, SO_PASSCRED, &const_int_one, sizeof(const_int_one)) < 0) - return -errno; + r = setsockopt_int(m->notify_fd, SOL_SOCKET, SO_PASSCRED, true); + if (r < 0) + return r; r = sd_event_add_io(m->event, &m->notify_event_source, m->notify_fd, EPOLLIN, manager_on_notify, m); if (r < 0) diff --git a/src/journal/journald-audit.c b/src/journal/journald-audit.c index 0e0465d879..f591e53d78 100644 --- a/src/journal/journald-audit.c +++ b/src/journal/journald-audit.c @@ -527,9 +527,9 @@ int server_open_audit(Server *s) { } else (void) fd_nonblock(s->audit_fd, true); - r = setsockopt(s->audit_fd, SOL_SOCKET, SO_PASSCRED, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(s->audit_fd, SOL_SOCKET, SO_PASSCRED, true); if (r < 0) - return log_error_errno(errno, "Failed to set SO_PASSCRED on audit socket: %m"); + return log_error_errno(r, "Failed to set SO_PASSCRED on audit socket: %m"); r = sd_event_add_io(s->event, &s->audit_event_source, s->audit_fd, EPOLLIN, server_process_datagram, s); if (r < 0) diff --git a/src/journal/journald-native.c b/src/journal/journald-native.c index 208758785d..7dd9ca62d5 100644 --- a/src/journal/journald-native.c +++ b/src/journal/journald-native.c @@ -462,21 +462,21 @@ int server_open_native_socket(Server*s) { } else (void) fd_nonblock(s->native_fd, true); - r = setsockopt(s->native_fd, SOL_SOCKET, SO_PASSCRED, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(s->native_fd, SOL_SOCKET, SO_PASSCRED, true); if (r < 0) - return log_error_errno(errno, "SO_PASSCRED failed: %m"); + return log_error_errno(r, "SO_PASSCRED failed: %m"); #if HAVE_SELINUX if (mac_selinux_use()) { - r = setsockopt(s->native_fd, SOL_SOCKET, SO_PASSSEC, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(s->native_fd, SOL_SOCKET, SO_PASSSEC, true); if (r < 0) - log_warning_errno(errno, "SO_PASSSEC failed: %m"); + log_warning_errno(r, "SO_PASSSEC failed: %m"); } #endif - r = setsockopt(s->native_fd, SOL_SOCKET, SO_TIMESTAMP, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(s->native_fd, SOL_SOCKET, SO_TIMESTAMP, true); if (r < 0) - return log_error_errno(errno, "SO_TIMESTAMP failed: %m"); + return log_error_errno(r, "SO_TIMESTAMP failed: %m"); r = sd_event_add_io(s->event, &s->native_event_source, s->native_fd, EPOLLIN, server_process_datagram, s); if (r < 0) diff --git a/src/journal/journald-syslog.c b/src/journal/journald-syslog.c index e347f8bf5d..4dbf42c53b 100644 --- a/src/journal/journald-syslog.c +++ b/src/journal/journald-syslog.c @@ -466,21 +466,21 @@ int server_open_syslog_socket(Server *s) { } else (void) fd_nonblock(s->syslog_fd, true); - r = setsockopt(s->syslog_fd, SOL_SOCKET, SO_PASSCRED, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(s->syslog_fd, SOL_SOCKET, SO_PASSCRED, true); if (r < 0) - return log_error_errno(errno, "SO_PASSCRED failed: %m"); + return log_error_errno(r, "SO_PASSCRED failed: %m"); #if HAVE_SELINUX if (mac_selinux_use()) { - r = setsockopt(s->syslog_fd, SOL_SOCKET, SO_PASSSEC, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(s->syslog_fd, SOL_SOCKET, SO_PASSSEC, true); if (r < 0) - log_warning_errno(errno, "SO_PASSSEC failed: %m"); + log_warning_errno(r, "SO_PASSSEC failed: %m"); } #endif - r = setsockopt(s->syslog_fd, SOL_SOCKET, SO_TIMESTAMP, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(s->syslog_fd, SOL_SOCKET, SO_TIMESTAMP, true); if (r < 0) - return log_error_errno(errno, "SO_TIMESTAMP failed: %m"); + return log_error_errno(r, "SO_TIMESTAMP failed: %m"); r = sd_event_add_io(s->event, &s->syslog_event_source, s->syslog_fd, EPOLLIN, server_process_datagram, s); if (r < 0) diff --git a/src/libsystemd-network/dhcp-network.c b/src/libsystemd-network/dhcp-network.c index aa92376ee8..71634a97d8 100644 --- a/src/libsystemd-network/dhcp-network.c +++ b/src/libsystemd-network/dhcp-network.c @@ -87,9 +87,9 @@ static int _bind_raw_socket(int ifindex, union sockaddr_union *link, if (s < 0) return -errno; - r = setsockopt(s, SOL_PACKET, PACKET_AUXDATA, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(s, SOL_PACKET, PACKET_AUXDATA, true); if (r < 0) - return -errno; + return r; r = setsockopt(s, SOL_SOCKET, SO_ATTACH_FILTER, &fprog, sizeof(fprog)); if (r < 0) @@ -159,9 +159,9 @@ int dhcp_network_bind_udp_socket(int ifindex, be32_t address, uint16_t port) { if (r < 0) return -errno; - r = setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(s, SOL_SOCKET, SO_REUSEADDR, true); if (r < 0) - return -errno; + return r; if (ifindex > 0) { if (if_indextoname(ifindex, ifname) == 0) @@ -173,18 +173,18 @@ int dhcp_network_bind_udp_socket(int ifindex, be32_t address, uint16_t port) { } if (address == INADDR_ANY) { - r = setsockopt(s, IPPROTO_IP, IP_PKTINFO, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(s, IPPROTO_IP, IP_PKTINFO, true); if (r < 0) - return -errno; + return r; - r = setsockopt(s, SOL_SOCKET, SO_BROADCAST, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(s, SOL_SOCKET, SO_BROADCAST, true); if (r < 0) - return -errno; + return r; } else { - r = setsockopt(s, IPPROTO_IP, IP_FREEBIND, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(s, IPPROTO_IP, IP_FREEBIND, true); if (r < 0) - return -errno; + return r; } r = bind(s, &src.sa, sizeof(src.in)); diff --git a/src/libsystemd-network/dhcp6-network.c b/src/libsystemd-network/dhcp6-network.c index 406b1efca4..580f43ba40 100644 --- a/src/libsystemd-network/dhcp6-network.c +++ b/src/libsystemd-network/dhcp6-network.c @@ -36,17 +36,17 @@ int dhcp6_network_bind_udp_socket(int index, struct in6_addr *local_address) { if (s < 0) return -errno; - r = setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(s, IPPROTO_IPV6, IPV6_V6ONLY, true); if (r < 0) - return -errno; + return r; - r = setsockopt(s, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, &const_int_zero, sizeof(const_int_zero)); + r = setsockopt_int(s, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, false); if (r < 0) - return -errno; + return r; - r = setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(s, SOL_SOCKET, SO_REUSEADDR, true); if (r < 0) - return -errno; + return r; r = bind(s, &src.sa, sizeof(src.in6)); if (r < 0) diff --git a/src/libsystemd-network/icmp6-util.c b/src/libsystemd-network/icmp6-util.c index c27a92c6ca..96da08e911 100644 --- a/src/libsystemd-network/icmp6-util.c +++ b/src/libsystemd-network/icmp6-util.c @@ -56,9 +56,9 @@ static int icmp6_bind_router_message(const struct icmp6_filter *filter, if (r < 0) return -errno; - r = setsockopt(s, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, &const_int_zero, sizeof(const_int_zero)); + r = setsockopt_int(s, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, false); if (r < 0) - return -errno; + return r; r = setsockopt(s, IPPROTO_IPV6, IPV6_MULTICAST_HOPS, &hops, sizeof(hops)); if (r < 0) @@ -68,13 +68,13 @@ static int icmp6_bind_router_message(const struct icmp6_filter *filter, if (r < 0) return -errno; - r = setsockopt(s, SOL_IPV6, IPV6_RECVHOPLIMIT, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(s, SOL_IPV6, IPV6_RECVHOPLIMIT, true); if (r < 0) - return -errno; + return r; - r = setsockopt(s, SOL_SOCKET, SO_TIMESTAMP, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(s, SOL_SOCKET, SO_TIMESTAMP, true); if (r < 0) - return -errno; + return r; if (if_indextoname(index, ifname) == 0) return -errno; diff --git a/src/libsystemd/sd-device/device-monitor.c b/src/libsystemd/sd-device/device-monitor.c index 6e94ff1fa0..b823d860a8 100644 --- a/src/libsystemd/sd-device/device-monitor.c +++ b/src/libsystemd/sd-device/device-monitor.c @@ -293,8 +293,9 @@ int device_monitor_enable_receiving(sd_device_monitor *m) { return log_debug_errno(r, "Failed to set address: %m"); /* enable receiving of sender credentials */ - if (setsockopt(m->sock, SOL_SOCKET, SO_PASSCRED, &const_int_one, sizeof(const_int_one)) < 0) - return log_debug_errno(errno, "Failed to set socket option SO_PASSCRED: %m"); + r = setsockopt_int(m->sock, SOL_SOCKET, SO_PASSCRED, true); + if (r < 0) + return log_debug_errno(r, "Failed to set socket option SO_PASSCRED: %m"); return 0; } diff --git a/src/libsystemd/sd-netlink/netlink-socket.c b/src/libsystemd/sd-netlink/netlink-socket.c index c18fd5890e..b1b9f6d8ce 100644 --- a/src/libsystemd/sd-netlink/netlink-socket.c +++ b/src/libsystemd/sd-netlink/netlink-socket.c @@ -90,9 +90,9 @@ int socket_bind(sd_netlink *nl) { socklen_t addrlen; int r; - r = setsockopt(nl->fd, SOL_NETLINK, NETLINK_PKTINFO, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(nl->fd, SOL_NETLINK, NETLINK_PKTINFO, true); if (r < 0) - return -errno; + return r; addrlen = sizeof(nl->sockaddr); diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index fb360a6f4f..88138d7d9d 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -2834,9 +2834,9 @@ static int setup_sd_notify_child(void) { if (r < 0) return log_error_errno(r, "Failed to chown " NSPAWN_NOTIFY_SOCKET_PATH ": %m"); - r = setsockopt(fd, SOL_SOCKET, SO_PASSCRED, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(fd, SOL_SOCKET, SO_PASSCRED, true); if (r < 0) - return log_error_errno(errno, "SO_PASSCRED failed: %m"); + return log_error_errno(r, "SO_PASSCRED failed: %m"); return TAKE_FD(fd); } diff --git a/src/resolve/resolved-dns-scope.c b/src/resolve/resolved-dns-scope.c index 0c96332c75..ee204435b3 100644 --- a/src/resolve/resolved-dns-scope.c +++ b/src/resolve/resolved-dns-scope.c @@ -378,9 +378,9 @@ static int dns_scope_socket( return -errno; if (type == SOCK_STREAM) { - r = setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(fd, IPPROTO_TCP, TCP_NODELAY, true); if (r < 0) - return -errno; + return r; } if (s->link) { @@ -401,21 +401,21 @@ static int dns_scope_socket( /* RFC 4795, section 2.5 requires the TTL to be set to 1 */ if (sa.sa.sa_family == AF_INET) { - r = setsockopt(fd, IPPROTO_IP, IP_TTL, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(fd, IPPROTO_IP, IP_TTL, true); if (r < 0) - return -errno; + return r; } else if (sa.sa.sa_family == AF_INET6) { - r = setsockopt(fd, IPPROTO_IPV6, IPV6_UNICAST_HOPS, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(fd, IPPROTO_IPV6, IPV6_UNICAST_HOPS, true); if (r < 0) - return -errno; + return r; } } if (type == SOCK_DGRAM) { /* Set IP_RECVERR or IPV6_RECVERR to get ICMP error feedback. See discussion in #10345. */ - r = setsockopt(fd, SOL_IP, sa.sa.sa_family == AF_INET ? IP_RECVERR : IPV6_RECVERR, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(fd, SOL_IP, sa.sa.sa_family == AF_INET ? IP_RECVERR : IPV6_RECVERR, true); if (r < 0) - return -errno; + return r; } if (ret_socket_address) diff --git a/src/resolve/resolved-dns-stub.c b/src/resolve/resolved-dns-stub.c index 5f87a790c6..c8c4d829e8 100644 --- a/src/resolve/resolved-dns-stub.c +++ b/src/resolve/resolved-dns-stub.c @@ -407,14 +407,17 @@ static int manager_dns_stub_udp_fd(Manager *m) { if (fd < 0) return -errno; - if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof const_int_one) < 0) - return -errno; + r = setsockopt_int(fd, SOL_SOCKET, SO_REUSEADDR, true); + if (r < 0) + return r; - if (setsockopt(fd, IPPROTO_IP, IP_PKTINFO, &const_int_one, sizeof const_int_one) < 0) - return -errno; + r = setsockopt_int(fd, IPPROTO_IP, IP_PKTINFO, true); + if (r < 0) + return r; - if (setsockopt(fd, IPPROTO_IP, IP_RECVTTL, &const_int_one, sizeof const_int_one) < 0) - return -errno; + r = setsockopt_int(fd, IPPROTO_IP, IP_RECVTTL, true); + if (r < 0) + return r; /* Make sure no traffic from outside the local host can leak to onto this socket */ if (setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, "lo", 3) < 0) @@ -493,17 +496,21 @@ static int manager_dns_stub_tcp_fd(Manager *m) { if (fd < 0) return -errno; - if (setsockopt(fd, IPPROTO_IP, IP_TTL, &const_int_one, sizeof const_int_one) < 0) - return -errno; + r = setsockopt_int(fd, IPPROTO_IP, IP_TTL, true); + if (r < 0) + return r; - if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof const_int_one) < 0) - return -errno; + r = setsockopt_int(fd, SOL_SOCKET, SO_REUSEADDR, true); + if (r < 0) + return r; - if (setsockopt(fd, IPPROTO_IP, IP_PKTINFO, &const_int_one, sizeof const_int_one) < 0) - return -errno; + r = setsockopt_int(fd, IPPROTO_IP, IP_PKTINFO, true); + if (r < 0) + return r; - if (setsockopt(fd, IPPROTO_IP, IP_RECVTTL, &const_int_one, sizeof const_int_one) < 0) - return -errno; + r = setsockopt_int(fd, IPPROTO_IP, IP_RECVTTL, true); + if (r < 0) + return r; /* Make sure no traffic from outside the local host can leak to onto this socket */ if (setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, "lo", 3) < 0) diff --git a/src/resolve/resolved-llmnr.c b/src/resolve/resolved-llmnr.c index a6100c3b00..905692fd37 100644 --- a/src/resolve/resolved-llmnr.c +++ b/src/resolve/resolved-llmnr.c @@ -140,21 +140,21 @@ int manager_llmnr_ipv4_udp_fd(Manager *m) { goto fail; } - r = setsockopt(m->llmnr_ipv4_udp_fd, IPPROTO_IP, IP_MULTICAST_LOOP, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->llmnr_ipv4_udp_fd, IPPROTO_IP, IP_MULTICAST_LOOP, true); if (r < 0) { - r = log_error_errno(errno, "LLMNR-IPv4(UDP): Failed to set IP_MULTICAST_LOOP: %m"); + log_error_errno(r, "LLMNR-IPv4(UDP): Failed to set IP_MULTICAST_LOOP: %m"); goto fail; } - r = setsockopt(m->llmnr_ipv4_udp_fd, IPPROTO_IP, IP_PKTINFO, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->llmnr_ipv4_udp_fd, IPPROTO_IP, IP_PKTINFO, true); if (r < 0) { - r = log_error_errno(errno, "LLMNR-IPv4(UDP): Failed to set IP_PKTINFO: %m"); + log_error_errno(r, "LLMNR-IPv4(UDP): Failed to set IP_PKTINFO: %m"); goto fail; } - r = setsockopt(m->llmnr_ipv4_udp_fd, IPPROTO_IP, IP_RECVTTL, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->llmnr_ipv4_udp_fd, IPPROTO_IP, IP_RECVTTL, true); if (r < 0) { - r = log_error_errno(errno, "LLMNR-IPv4(UDP): Failed to set IP_RECVTTL: %m"); + log_error_errno(r, "LLMNR-IPv4(UDP): Failed to set IP_RECVTTL: %m"); goto fail; } @@ -176,9 +176,9 @@ int manager_llmnr_ipv4_udp_fd(Manager *m) { log_warning("LLMNR-IPv4(UDP): There appears to be another LLMNR responder running, or previously systemd-resolved crashed with some outstanding transfers."); /* try again with SO_REUSEADDR */ - r = setsockopt(m->llmnr_ipv4_udp_fd, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->llmnr_ipv4_udp_fd, SOL_SOCKET, SO_REUSEADDR, true); if (r < 0) { - r = log_error_errno(errno, "LLMNR-IPv4(UDP): Failed to set SO_REUSEADDR: %m"); + log_error_errno(r, "LLMNR-IPv4(UDP): Failed to set SO_REUSEADDR: %m"); goto fail; } @@ -189,9 +189,9 @@ int manager_llmnr_ipv4_udp_fd(Manager *m) { } } else { /* enable SO_REUSEADDR for the case that the user really wants multiple LLMNR responders */ - r = setsockopt(m->llmnr_ipv4_udp_fd, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->llmnr_ipv4_udp_fd, SOL_SOCKET, SO_REUSEADDR, true); if (r < 0) { - r = log_error_errno(errno, "LLMNR-IPv4(UDP): Failed to set SO_REUSEADDR: %m"); + log_error_errno(r, "LLMNR-IPv4(UDP): Failed to set SO_REUSEADDR: %m"); goto fail; } } @@ -239,27 +239,27 @@ int manager_llmnr_ipv6_udp_fd(Manager *m) { goto fail; } - r = setsockopt(m->llmnr_ipv6_udp_fd, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->llmnr_ipv6_udp_fd, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, true); if (r < 0) { - r = log_error_errno(errno, "LLMNR-IPv6(UDP): Failed to set IPV6_MULTICAST_LOOP: %m"); + log_error_errno(r, "LLMNR-IPv6(UDP): Failed to set IPV6_MULTICAST_LOOP: %m"); goto fail; } - r = setsockopt(m->llmnr_ipv6_udp_fd, IPPROTO_IPV6, IPV6_V6ONLY, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->llmnr_ipv6_udp_fd, IPPROTO_IPV6, IPV6_V6ONLY, true); if (r < 0) { - r = log_error_errno(errno, "LLMNR-IPv6(UDP): Failed to set IPV6_V6ONLY: %m"); + log_error_errno(r, "LLMNR-IPv6(UDP): Failed to set IPV6_V6ONLY: %m"); goto fail; } - r = setsockopt(m->llmnr_ipv6_udp_fd, IPPROTO_IPV6, IPV6_RECVPKTINFO, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->llmnr_ipv6_udp_fd, IPPROTO_IPV6, IPV6_RECVPKTINFO, true); if (r < 0) { - r = log_error_errno(errno, "LLMNR-IPv6(UDP): Failed to set IPV6_RECVPKTINFO: %m"); + log_error_errno(r, "LLMNR-IPv6(UDP): Failed to set IPV6_RECVPKTINFO: %m"); goto fail; } - r = setsockopt(m->llmnr_ipv6_udp_fd, IPPROTO_IPV6, IPV6_RECVHOPLIMIT, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->llmnr_ipv6_udp_fd, IPPROTO_IPV6, IPV6_RECVHOPLIMIT, true); if (r < 0) { - r = log_error_errno(errno, "LLMNR-IPv6(UDP): Failed to set IPV6_RECVHOPLIMIT: %m"); + log_error_errno(r, "LLMNR-IPv6(UDP): Failed to set IPV6_RECVHOPLIMIT: %m"); goto fail; } @@ -274,9 +274,9 @@ int manager_llmnr_ipv6_udp_fd(Manager *m) { log_warning("LLMNR-IPv6(UDP): There appears to be another LLMNR responder running, or previously systemd-resolved crashed with some outstanding transfers."); /* try again with SO_REUSEADDR */ - r = setsockopt(m->llmnr_ipv6_udp_fd, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->llmnr_ipv6_udp_fd, SOL_SOCKET, SO_REUSEADDR, true); if (r < 0) { - r = log_error_errno(errno, "LLMNR-IPv6(UDP): Failed to set SO_REUSEADDR: %m"); + log_error_errno(r, "LLMNR-IPv6(UDP): Failed to set SO_REUSEADDR: %m"); goto fail; } @@ -287,9 +287,9 @@ int manager_llmnr_ipv6_udp_fd(Manager *m) { } } else { /* enable SO_REUSEADDR for the case that the user really wants multiple LLMNR responders */ - r = setsockopt(m->llmnr_ipv6_udp_fd, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->llmnr_ipv6_udp_fd, SOL_SOCKET, SO_REUSEADDR, true); if (r < 0) { - r = log_error_errno(errno, "LLMNR-IPv6(UDP): Failed to set SO_REUSEADDR: %m"); + log_error_errno(r, "LLMNR-IPv6(UDP): Failed to set SO_REUSEADDR: %m"); goto fail; } } @@ -368,21 +368,21 @@ int manager_llmnr_ipv4_tcp_fd(Manager *m) { return log_error_errno(errno, "LLMNR-IPv4(TCP): Failed to create socket: %m"); /* RFC 4795, section 2.5. requires setting the TTL of TCP streams to 1 */ - r = setsockopt(m->llmnr_ipv4_tcp_fd, IPPROTO_IP, IP_TTL, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->llmnr_ipv4_tcp_fd, IPPROTO_IP, IP_TTL, true); if (r < 0) { - r = log_error_errno(errno, "LLMNR-IPv4(TCP): Failed to set IP_TTL: %m"); + log_error_errno(r, "LLMNR-IPv4(TCP): Failed to set IP_TTL: %m"); goto fail; } - r = setsockopt(m->llmnr_ipv4_tcp_fd, IPPROTO_IP, IP_PKTINFO, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->llmnr_ipv4_tcp_fd, IPPROTO_IP, IP_PKTINFO, true); if (r < 0) { - r = log_error_errno(errno, "LLMNR-IPv4(TCP): Failed to set IP_PKTINFO: %m"); + log_error_errno(r, "LLMNR-IPv4(TCP): Failed to set IP_PKTINFO: %m"); goto fail; } - r = setsockopt(m->llmnr_ipv4_tcp_fd, IPPROTO_IP, IP_RECVTTL, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->llmnr_ipv4_tcp_fd, IPPROTO_IP, IP_RECVTTL, true); if (r < 0) { - r = log_error_errno(errno, "LLMNR-IPv4(TCP): Failed to set IP_RECVTTL: %m"); + log_error_errno(r, "LLMNR-IPv4(TCP): Failed to set IP_RECVTTL: %m"); goto fail; } @@ -404,9 +404,9 @@ int manager_llmnr_ipv4_tcp_fd(Manager *m) { log_warning("LLMNR-IPv4(TCP): There appears to be another LLMNR responder running, or previously systemd-resolved crashed with some outstanding transfers."); /* try again with SO_REUSEADDR */ - r = setsockopt(m->llmnr_ipv4_tcp_fd, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->llmnr_ipv4_tcp_fd, SOL_SOCKET, SO_REUSEADDR, true); if (r < 0) { - r = log_error_errno(errno, "LLMNR-IPv4(TCP): Failed to set SO_REUSEADDR: %m"); + log_error_errno(r, "LLMNR-IPv4(TCP): Failed to set SO_REUSEADDR: %m"); goto fail; } @@ -417,9 +417,9 @@ int manager_llmnr_ipv4_tcp_fd(Manager *m) { } } else { /* enable SO_REUSEADDR for the case that the user really wants multiple LLMNR responders */ - r = setsockopt(m->llmnr_ipv4_tcp_fd, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->llmnr_ipv4_tcp_fd, SOL_SOCKET, SO_REUSEADDR, true); if (r < 0) { - r = log_error_errno(errno, "LLMNR-IPv4(TCP): Failed to set SO_REUSEADDR: %m"); + log_error_errno(r, "LLMNR-IPv4(TCP): Failed to set SO_REUSEADDR: %m"); goto fail; } } @@ -460,27 +460,27 @@ int manager_llmnr_ipv6_tcp_fd(Manager *m) { return log_error_errno(errno, "LLMNR-IPv6(TCP): Failed to create socket: %m"); /* RFC 4795, section 2.5. requires setting the TTL of TCP streams to 1 */ - r = setsockopt(m->llmnr_ipv6_tcp_fd, IPPROTO_IPV6, IPV6_UNICAST_HOPS, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->llmnr_ipv6_tcp_fd, IPPROTO_IPV6, IPV6_UNICAST_HOPS, true); if (r < 0) { - r = log_error_errno(errno, "LLMNR-IPv6(TCP): Failed to set IPV6_UNICAST_HOPS: %m"); + log_error_errno(r, "LLMNR-IPv6(TCP): Failed to set IPV6_UNICAST_HOPS: %m"); goto fail; } - r = setsockopt(m->llmnr_ipv6_tcp_fd, IPPROTO_IPV6, IPV6_V6ONLY, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->llmnr_ipv6_tcp_fd, IPPROTO_IPV6, IPV6_V6ONLY, true); if (r < 0) { - r = log_error_errno(errno, "LLMNR-IPv6(TCP): Failed to set IPV6_V6ONLY: %m"); + log_error_errno(r, "LLMNR-IPv6(TCP): Failed to set IPV6_V6ONLY: %m"); goto fail; } - r = setsockopt(m->llmnr_ipv6_tcp_fd, IPPROTO_IPV6, IPV6_RECVPKTINFO, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->llmnr_ipv6_tcp_fd, IPPROTO_IPV6, IPV6_RECVPKTINFO, true); if (r < 0) { - r = log_error_errno(errno, "LLMNR-IPv6(TCP): Failed to set IPV6_RECVPKTINFO: %m"); + log_error_errno(r, "LLMNR-IPv6(TCP): Failed to set IPV6_RECVPKTINFO: %m"); goto fail; } - r = setsockopt(m->llmnr_ipv6_tcp_fd, IPPROTO_IPV6, IPV6_RECVHOPLIMIT, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->llmnr_ipv6_tcp_fd, IPPROTO_IPV6, IPV6_RECVHOPLIMIT, true); if (r < 0) { - r = log_error_errno(errno, "LLMNR-IPv6(TCP): Failed to set IPV6_RECVHOPLIMIT: %m"); + log_error_errno(r, "LLMNR-IPv6(TCP): Failed to set IPV6_RECVHOPLIMIT: %m"); goto fail; } @@ -495,9 +495,9 @@ int manager_llmnr_ipv6_tcp_fd(Manager *m) { log_warning("LLMNR-IPv6(TCP): There appears to be another LLMNR responder running, or previously systemd-resolved crashed with some outstanding transfers."); /* try again with SO_REUSEADDR */ - r = setsockopt(m->llmnr_ipv6_tcp_fd, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->llmnr_ipv6_tcp_fd, SOL_SOCKET, SO_REUSEADDR, true); if (r < 0) { - r = log_error_errno(errno, "LLMNR-IPv6(TCP): Failed to set SO_REUSEADDR: %m"); + log_error_errno(r, "LLMNR-IPv6(TCP): Failed to set SO_REUSEADDR: %m"); goto fail; } @@ -508,9 +508,9 @@ int manager_llmnr_ipv6_tcp_fd(Manager *m) { } } else { /* enable SO_REUSEADDR for the case that the user really wants multiple LLMNR responders */ - r = setsockopt(m->llmnr_ipv6_tcp_fd, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->llmnr_ipv6_tcp_fd, SOL_SOCKET, SO_REUSEADDR, true); if (r < 0) { - r = log_error_errno(errno, "LLMNR-IPv6(TCP): Failed to set SO_REUSEADDR: %m"); + log_error_errno(r, "LLMNR-IPv6(TCP): Failed to set SO_REUSEADDR: %m"); goto fail; } } diff --git a/src/resolve/resolved-mdns.c b/src/resolve/resolved-mdns.c index feee66c85c..eb77a05f9b 100644 --- a/src/resolve/resolved-mdns.c +++ b/src/resolve/resolved-mdns.c @@ -363,21 +363,21 @@ int manager_mdns_ipv4_fd(Manager *m) { goto fail; } - r = setsockopt(m->mdns_ipv4_fd, IPPROTO_IP, IP_MULTICAST_LOOP, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->mdns_ipv4_fd, IPPROTO_IP, IP_MULTICAST_LOOP, true); if (r < 0) { - r = log_error_errno(errno, "mDNS-IPv4: Failed to set IP_MULTICAST_LOOP: %m"); + log_error_errno(r, "mDNS-IPv4: Failed to set IP_MULTICAST_LOOP: %m"); goto fail; } - r = setsockopt(m->mdns_ipv4_fd, IPPROTO_IP, IP_PKTINFO, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->mdns_ipv4_fd, IPPROTO_IP, IP_PKTINFO, true); if (r < 0) { - r = log_error_errno(errno, "mDNS-IPv4: Failed to set IP_PKTINFO: %m"); + log_error_errno(r, "mDNS-IPv4: Failed to set IP_PKTINFO: %m"); goto fail; } - r = setsockopt(m->mdns_ipv4_fd, IPPROTO_IP, IP_RECVTTL, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->mdns_ipv4_fd, IPPROTO_IP, IP_RECVTTL, true); if (r < 0) { - r = log_error_errno(errno, "mDNS-IPv4: Failed to set IP_RECVTTL: %m"); + log_error_errno(r, "mDNS-IPv4: Failed to set IP_RECVTTL: %m"); goto fail; } @@ -400,9 +400,9 @@ int manager_mdns_ipv4_fd(Manager *m) { log_warning("mDNS-IPv4: There appears to be another mDNS responder running, or previously systemd-resolved crashed with some outstanding transfers."); /* try again with SO_REUSEADDR */ - r = setsockopt(m->mdns_ipv4_fd, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->mdns_ipv4_fd, SOL_SOCKET, SO_REUSEADDR, true); if (r < 0) { - r = log_error_errno(errno, "mDNS-IPv4: Failed to set SO_REUSEADDR: %m"); + log_error_errno(r, "mDNS-IPv4: Failed to set SO_REUSEADDR: %m"); goto fail; } @@ -413,9 +413,9 @@ int manager_mdns_ipv4_fd(Manager *m) { } } else { /* enable SO_REUSEADDR for the case that the user really wants multiple mDNS responders */ - r = setsockopt(m->mdns_ipv4_fd, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->mdns_ipv4_fd, SOL_SOCKET, SO_REUSEADDR, true); if (r < 0) { - r = log_error_errno(errno, "mDNS-IPv4: Failed to set SO_REUSEADDR: %m"); + log_error_errno(r, "mDNS-IPv4: Failed to set SO_REUSEADDR: %m"); goto fail; } } @@ -461,27 +461,27 @@ int manager_mdns_ipv6_fd(Manager *m) { goto fail; } - r = setsockopt(m->mdns_ipv6_fd, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->mdns_ipv6_fd, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, true); if (r < 0) { - r = log_error_errno(errno, "mDNS-IPv6: Failed to set IPV6_MULTICAST_LOOP: %m"); + log_error_errno(r, "mDNS-IPv6: Failed to set IPV6_MULTICAST_LOOP: %m"); goto fail; } - r = setsockopt(m->mdns_ipv6_fd, IPPROTO_IPV6, IPV6_V6ONLY, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->mdns_ipv6_fd, IPPROTO_IPV6, IPV6_V6ONLY, true); if (r < 0) { - r = log_error_errno(errno, "mDNS-IPv6: Failed to set IPV6_V6ONLY: %m"); + log_error_errno(r, "mDNS-IPv6: Failed to set IPV6_V6ONLY: %m"); goto fail; } - r = setsockopt(m->mdns_ipv6_fd, IPPROTO_IPV6, IPV6_RECVPKTINFO, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->mdns_ipv6_fd, IPPROTO_IPV6, IPV6_RECVPKTINFO, true); if (r < 0) { - r = log_error_errno(errno, "mDNS-IPv6: Failed to set IPV6_RECVPKTINFO: %m"); + log_error_errno(r, "mDNS-IPv6: Failed to set IPV6_RECVPKTINFO: %m"); goto fail; } - r = setsockopt(m->mdns_ipv6_fd, IPPROTO_IPV6, IPV6_RECVHOPLIMIT, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->mdns_ipv6_fd, IPPROTO_IPV6, IPV6_RECVHOPLIMIT, true); if (r < 0) { - r = log_error_errno(errno, "mDNS-IPv6: Failed to set IPV6_RECVHOPLIMIT: %m"); + log_error_errno(r, "mDNS-IPv6: Failed to set IPV6_RECVHOPLIMIT: %m"); goto fail; } @@ -497,9 +497,9 @@ int manager_mdns_ipv6_fd(Manager *m) { log_warning("mDNS-IPv6: There appears to be another mDNS responder running, or previously systemd-resolved crashed with some outstanding transfers."); /* try again with SO_REUSEADDR */ - r = setsockopt(m->mdns_ipv6_fd, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->mdns_ipv6_fd, SOL_SOCKET, SO_REUSEADDR, true); if (r < 0) { - r = log_error_errno(errno, "mDNS-IPv6: Failed to set SO_REUSEADDR: %m"); + log_error_errno(r, "mDNS-IPv6: Failed to set SO_REUSEADDR: %m"); goto fail; } @@ -510,9 +510,9 @@ int manager_mdns_ipv6_fd(Manager *m) { } } else { /* enable SO_REUSEADDR for the case that the user really wants multiple mDNS responders */ - r = setsockopt(m->mdns_ipv6_fd, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->mdns_ipv6_fd, SOL_SOCKET, SO_REUSEADDR, true); if (r < 0) { - r = log_error_errno(errno, "mDNS-IPv6: Failed to set SO_REUSEADDR: %m"); + log_error_errno(r, "mDNS-IPv6: Failed to set SO_REUSEADDR: %m"); goto fail; } } diff --git a/src/shared/ask-password-api.c b/src/shared/ask-password-api.c index 681fd0d618..b227fe3903 100644 --- a/src/shared/ask-password-api.c +++ b/src/shared/ask-password-api.c @@ -455,7 +455,7 @@ static int create_socket(char **ret) { _cleanup_free_ char *path = NULL; union sockaddr_union sa = {}; _cleanup_close_ int fd = -1; - int salen; + int salen, r; assert(ret); @@ -475,8 +475,9 @@ static int create_socket(char **ret) { return -errno; } - if (setsockopt(fd, SOL_SOCKET, SO_PASSCRED, &const_int_one, sizeof(const_int_one)) < 0) - return -errno; + r = setsockopt_int(fd, SOL_SOCKET, SO_PASSCRED, true); + if (r < 0) + return r; *ret = TAKE_PTR(path); return TAKE_FD(fd); diff --git a/src/timesync/timesyncd-manager.c b/src/timesync/timesyncd-manager.c index f33a32afc0..1d59b42495 100644 --- a/src/timesync/timesyncd-manager.c +++ b/src/timesync/timesyncd-manager.c @@ -650,9 +650,9 @@ static int manager_listen_setup(Manager *m) { if (r < 0) return -errno; - r = setsockopt(m->server_socket, SOL_SOCKET, SO_TIMESTAMPNS, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(m->server_socket, SOL_SOCKET, SO_TIMESTAMPNS, true); if (r < 0) - return -errno; + return r; (void) setsockopt(m->server_socket, IPPROTO_IP, IP_TOS, &tos, sizeof(tos)); diff --git a/src/udev/udev-ctrl.c b/src/udev/udev-ctrl.c index bde8b63dde..b590a1e4bb 100644 --- a/src/udev/udev-ctrl.c +++ b/src/udev/udev-ctrl.c @@ -96,9 +96,9 @@ struct udev_ctrl *udev_ctrl_new_from_fd(int fd) { * FIXME: remove it as soon as we can depend on this: * http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=90c6bd34f884cd9cee21f1d152baf6c18bcac949 */ - r = setsockopt(uctrl->sock, SOL_SOCKET, SO_PASSCRED, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(uctrl->sock, SOL_SOCKET, SO_PASSCRED, true); if (r < 0) - log_warning_errno(errno, "could not set SO_PASSCRED: %m"); + log_warning_errno(r, "could not set SO_PASSCRED: %m"); uctrl->saddr.un = (struct sockaddr_un) { .sun_family = AF_UNIX, @@ -190,9 +190,9 @@ struct udev_ctrl_connection *udev_ctrl_get_connection(struct udev_ctrl *uctrl) { } /* enable receiving of the sender credentials in the messages */ - r = setsockopt(conn->sock, SOL_SOCKET, SO_PASSCRED, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(conn->sock, SOL_SOCKET, SO_PASSCRED, true); if (r < 0) - log_warning_errno(errno, "could not set SO_PASSCRED: %m"); + log_warning_errno(r, "could not set SO_PASSCRED: %m"); udev_ctrl_ref(uctrl); return conn; diff --git a/src/udev/udevd.c b/src/udev/udevd.c index 20fd23053a..64f7f1ff2d 100644 --- a/src/udev/udevd.c +++ b/src/udev/udevd.c @@ -1576,9 +1576,9 @@ static int manager_new(Manager **ret, int fd_ctrl, int fd_uevent, const char *cg fd_worker = manager->worker_watch[READ_END]; - r = setsockopt(fd_worker, SOL_SOCKET, SO_PASSCRED, &const_int_one, sizeof(const_int_one)); + r = setsockopt_int(fd_worker, SOL_SOCKET, SO_PASSCRED, true); if (r < 0) - return log_error_errno(errno, "could not enable SO_PASSCRED: %m"); + return log_error_errno(r, "could not enable SO_PASSCRED: %m"); manager->fd_inotify = udev_watch_init(); if (manager->fd_inotify < 0)