X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Fsocket-util.c;h=49ea75880dbbd569a9c8c4fdb667835f8e062b3d;hb=0c0271841ab45595f71528c50bcf1904d4b841d5;hp=471b6dc2842719ac525bc6bcdd019909d70af1e4;hpb=5430f7f2bc7330f3088b894166bf3524a067e3d8;p=elogind.git diff --git a/src/shared/socket-util.c b/src/shared/socket-util.c index 471b6dc28..49ea75880 100644 --- a/src/shared/socket-util.c +++ b/src/shared/socket-util.c @@ -35,6 +35,7 @@ #include "macro.h" #include "util.h" #include "mkdir.h" +#include "path-util.h" #include "socket-util.h" #include "missing.h" @@ -166,7 +167,8 @@ int socket_address_parse(SocketAddress *a, const char *s) { } else { /* Just a port */ - if ((r = safe_atou(s, &u)) < 0) + r = safe_atou(s, &u); + if (r < 0) return r; if (u <= 0 || u > 0xFFFF) @@ -192,7 +194,7 @@ int socket_address_parse(SocketAddress *a, const char *s) { int socket_address_parse_netlink(SocketAddress *a, const char *s) { int family; unsigned group = 0; - char* sfamily = NULL; + _cleanup_free_ char *sfamily = NULL; assert(a); assert(s); @@ -203,13 +205,9 @@ int socket_address_parse_netlink(SocketAddress *a, const char *s) { if (sscanf(s, "%ms %u", &sfamily, &group) < 1) return errno ? -errno : -EINVAL; - if ((family = netlink_family_from_string(sfamily)) < 0) - if (safe_atoi(sfamily, &family) < 0) { - free(sfamily); - return -EINVAL; - } - - free(sfamily); + family = netlink_family_from_string(sfamily); + if (family < 0) + return -EINVAL; a->sockaddr.nl.nl_family = AF_NETLINK; a->sockaddr.nl.nl_groups = group; @@ -365,15 +363,12 @@ int socket_address_print(const SocketAddress *a, char **p) { } case AF_NETLINK: { - const char *sfamily; - - if ((sfamily = netlink_family_to_string(a->protocol))) - r = asprintf(p, "%s %u", sfamily, a->sockaddr.nl.nl_groups); - else - r = asprintf(p, "%i %u", a->protocol, a->sockaddr.nl.nl_groups); + char _cleanup_free_ *sfamily = NULL; + r = netlink_family_to_string_alloc(a->protocol, &sfamily); if (r < 0) - return -ENOMEM; + return r; + r = asprintf(p, "%s %u", sfamily, a->sockaddr.nl.nl_groups); return 0; } @@ -538,7 +533,7 @@ static const char* const netlink_family_table[] = { [NETLINK_ECRYPTFS] = "ecryptfs" }; -DEFINE_STRING_TABLE_LOOKUP(netlink_family, int); +DEFINE_STRING_TABLE_LOOKUP_WITH_FALLBACK(netlink_family, int, INT_MAX); static const char* const socket_address_bind_ipv6_only_table[_SOCKET_ADDRESS_BIND_IPV6_ONLY_MAX] = { [SOCKET_ADDRESS_DEFAULT] = "default",