summaryrefslogtreecommitdiff
path: root/src/shared/socket-netlink.c
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2020-09-03 15:38:46 +0200
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2020-09-10 00:46:44 +0200
commitc1f848d73c076527b617c132d7dd3cdb1699e2b8 (patch)
tree821119e94eca3658e54ca3759df2e6b9487d8de3 /src/shared/socket-netlink.c
parentb16d17a68ae8b44111b08c2689b3dee1d1f90169 (diff)
downloadsystemd-c1f848d73c076527b617c132d7dd3cdb1699e2b8.tar.gz
shared: check interface name validity in in_addr_port_ifindex_name_from_string_auto()
We don't try to resolve invalid ifnames as all. A different return code is used. This difference will be verified later in test_socket_address_parse() when socket_address_parse() is converted to use in_addr_port_ifindex_name_from_string_auto().
Diffstat (limited to 'src/shared/socket-netlink.c')
-rw-r--r--src/shared/socket-netlink.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/shared/socket-netlink.c b/src/shared/socket-netlink.c
index 4b52fa3097..61db269791 100644
--- a/src/shared/socket-netlink.c
+++ b/src/shared/socket-netlink.c
@@ -379,6 +379,10 @@ int in_addr_port_ifindex_name_from_string_auto(
if (isempty(m + 1))
return -EINVAL;
+ if (!ifname_valid_full(m + 1, IFNAME_VALID_ALTERNATIVE | IFNAME_VALID_NUMERIC))
+ return -EINVAL; /* We want to return -EINVAL for syntactically invalid names,
+ * and -ENODEV for valid but nonexistent interfaces. */
+
ifindex = resolve_interface(NULL, m + 1);
if (ifindex < 0)
return ifindex;