summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2017-01-31 20:36:20 -0500
committerGitHub <noreply@github.com>2017-01-31 20:36:20 -0500
commita38d90c672adf85cc3d164326efd26b361222f48 (patch)
tree14ca7d4f77ef8e7b7bbfc41e5feade0dad03c420
parent91d910e386f7b0ada1296994e86ebbd1c8c762dc (diff)
parent7454aec7ff3797a346fc926aea2dc615fdb97990 (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.c2
-rw-r--r--src/network/networkd-address.c4
-rw-r--r--src/test/test-socket-util.c3
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"));