summaryrefslogtreecommitdiff
path: root/src/basic/socket-util.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2021-03-05 20:33:15 +0100
committerYu Watanabe <watanabe.yu+github@gmail.com>2021-03-06 11:26:18 +0900
commit07a7441a1c0c09b63bb76fa48d540f8d37db0c6f (patch)
tree3e0a8df488f73a0b72fa5ce2b46b55c296bdbc59 /src/basic/socket-util.c
parent5d5b6442a24d4d771e9f82848c2d8f257f10958c (diff)
downloadsystemd-07a7441a1c0c09b63bb76fa48d540f8d37db0c6f.tar.gz
socket-util: refuse "all" and "default" as valid ifnames
Let's avoid collisions with special sysctls.
Diffstat (limited to 'src/basic/socket-util.c')
-rw-r--r--src/basic/socket-util.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/basic/socket-util.c b/src/basic/socket-util.c
index 8267988ad9..06387bdfd6 100644
--- a/src/basic/socket-util.c
+++ b/src/basic/socket-util.c
@@ -736,6 +736,11 @@ bool ifname_valid_full(const char *p, IfnameValidFlags flags) {
if (dot_or_dot_dot(p))
return false;
+ /* Let's refuse "all" and "default" as interface name, to avoid collisions with the special sysctl
+ * directories /proc/sys/net/{ipv4,ipv6}/conf/{all,default} */
+ if (STR_IN_SET(p, "all", "default"))
+ return false;
+
for (const char *t = p; *t; t++) {
if ((unsigned char) *t >= 127U)
return false;