]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
shared: check interface name validity in in_addr_port_ifindex_name_from_string_auto()
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 3 Sep 2020 13:38:46 +0000 (15:38 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 9 Sep 2020 22:46:44 +0000 (00:46 +0200)
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

index 4b52fa3097c20624aa8ba64fa67dcacb540f1b12..61db26979156b0f6b1af7eda7dcbe0e494a7680b 100644 (file)
@@ -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;