diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2017-01-31 20:36:20 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-01-31 20:36:20 -0500 |
commit | a38d90c672adf85cc3d164326efd26b361222f48 (patch) | |
tree | 14ca7d4f77ef8e7b7bbfc41e5feade0dad03c420 | |
parent | 91d910e386f7b0ada1296994e86ebbd1c8c762dc (diff) | |
parent | 7454aec7ff3797a346fc926aea2dc615fdb97990 (diff) |
Merge pull request #5146 from ssahani/ifname-alias
networkd: Allow ':' in label
This reverts a341dfe563 and takes a slightly different approach: anything is
allowed in network interface labels, but network interface names are verified
as before (i.e. amongst other things, no colons are allowed there).
-rw-r--r-- | src/basic/socket-util.c | 2 | ||||
-rw-r--r-- | src/network/networkd-address.c | 4 | ||||
-rw-r--r-- | src/test/test-socket-util.c | 3 |
3 files changed, 4 insertions, 5 deletions
diff --git a/src/basic/socket-util.c b/src/basic/socket-util.c index c882b8a12a..77f81a60ba 100644 --- a/src/basic/socket-util.c +++ b/src/basic/socket-util.c @@ -887,7 +887,7 @@ bool ifname_valid(const char *p) { if ((unsigned char) *p <= 32U) return false; - if (*p == '/') + if (*p == ':' || *p == '/') return false; numeric = numeric && (*p >= '0' && *p <= '9'); diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index 2b698d9531..ffd2e18a45 100644 --- a/src/network/networkd-address.c +++ b/src/network/networkd-address.c @@ -809,8 +809,8 @@ int config_parse_label( if (r < 0) return r; - if (!ifname_valid(rvalue)) { - log_syntax(unit, LOG_ERR, filename, line, 0, "Interface label is not valid or too long, ignoring assignment: %s", rvalue); + if (strlen(rvalue) >= IFNAMSIZ) { + log_syntax(unit, LOG_ERR, filename, line, 0, "Interface label is too long, ignoring assignment: %s", rvalue); return 0; } diff --git a/src/test/test-socket-util.c b/src/test/test-socket-util.c index e1f5fd5084..d80613dc84 100644 --- a/src/test/test-socket-util.c +++ b/src/test/test-socket-util.c @@ -30,7 +30,6 @@ static void test_ifname_valid(void) { assert(ifname_valid("foo")); assert(ifname_valid("eth0")); - assert(ifname_valid("eth0:0")); assert(!ifname_valid("0")); assert(!ifname_valid("99")); @@ -45,7 +44,7 @@ static void test_ifname_valid(void) { assert(!ifname_valid(".")); assert(!ifname_valid("..")); assert(ifname_valid("foo.bar")); - assert(ifname_valid("x:y")); + assert(!ifname_valid("x:y")); assert(ifname_valid("xxxxxxxxxxxxxxx")); assert(!ifname_valid("xxxxxxxxxxxxxxxx")); |