From 90e8691111889a7b5f3c812f5a41f15a8a058913 Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Tue, 7 Nov 2017 00:14:39 +0100 Subject: New upstream version 1.9.90 --- libnm-util/nm-setting-bond.c | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) (limited to 'libnm-util/nm-setting-bond.c') 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 -- cgit 1.3.0-6-gf8a5