diff options
| author | Michael Biebl <biebl@debian.org> | 2017-11-07 00:14:39 +0100 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2017-11-07 00:14:39 +0100 |
| commit | 90e8691111889a7b5f3c812f5a41f15a8a058913 (patch) | |
| tree | f101a879eca27c34a9bfa5f3da52266b22539a36 /libnm-util/nm-setting-bond.c | |
| parent | bdb6eeb0670658255c2a4c3c501c0a27fa8cfe55 (diff) | |
New upstream version 1.9.90 upstream/1.9.90
Diffstat (limited to 'libnm-util/nm-setting-bond.c')
| -rw-r--r-- | libnm-util/nm-setting-bond.c | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/libnm-util/nm-setting-bond.c b/libnm-util/nm-setting-bond.c index 8a11bc23..f56cb428 100644 --- a/libnm-util/nm-setting-bond.c +++ b/libnm-util/nm-setting-bond.c @@ -258,19 +258,34 @@ validate_list (const char *name, const char *value, const BondDefault *def) static gboolean validate_ip (const char *name, const char *value) { - char **ips, **iter; - gboolean success = TRUE; + gs_free char *value_clone = NULL; struct in_addr addr; if (!value || !value[0]) return FALSE; - ips = g_strsplit_set (value, ",", 0); - for (iter = ips; iter && *iter && success; iter++) - success = !!inet_aton (*iter, &addr); - g_strfreev (ips); + value_clone = g_strdup (value); + value = value_clone; + for (;;) { + char *eow; - return success; + /* we do not skip over empty words. E.g + * "192.168.1.1," is an error. + * + * ... for no particular reason. */ + + eow = strchr (value, ','); + if (eow) + *eow = '\0'; + + if (inet_pton (AF_INET, value, &addr) != 1) + return FALSE; + + if (!eow) + break; + value = eow + 1; + } + return TRUE; } static gboolean |