From: Zbigniew Jędrzejewski-Szmek Date: Thu, 3 Sep 2020 13:38:46 +0000 (+0200) Subject: shared: check interface name validity in in_addr_port_ifindex_name_from_string_auto() X-Git-Tag: v247-rc1~261^2~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c1f848d73c076527b617c132d7dd3cdb1699e2b8;p=thirdparty%2Fsystemd.git 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(). --- diff --git a/src/shared/socket-netlink.c b/src/shared/socket-netlink.c index 4b52fa3097c..61db2697915 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;