From c1f848d73c076527b617c132d7dd3cdb1699e2b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 3 Sep 2020 15:38:46 +0200 Subject: [PATCH] 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(). --- src/shared/socket-netlink.c | 4 ++++ 1 file changed, 4 insertions(+) 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;