summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2014-11-11 16:09:08 +0100
committerThomas Haller <thaller@redhat.com>2014-11-11 16:09:08 +0100
commitf2097ca482853aef7a80674cb24cb0c5cc2f9775 (patch)
tree817471621ca711ba0d473352f28e6b9f007508c1
parent1e8b681d4f10c2b5e9478ec4972cad64aa1f8e7c (diff)
downloadNetworkManager-f2097ca482853aef7a80674cb24cb0c5cc2f9775.tar.gz
keyfile: don't assert when parsing invalid prefix
Signed-off-by: Thomas Haller <thaller@redhat.com>
-rw-r--r--src/settings/plugins/keyfile/reader.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/settings/plugins/keyfile/reader.c b/src/settings/plugins/keyfile/reader.c
index 19149e0723..c4a2a5d9bc 100644
--- a/src/settings/plugins/keyfile/reader.c
+++ b/src/settings/plugins/keyfile/reader.c
@@ -324,15 +324,17 @@ read_one_ip_address_or_route (GKeyFile *file,
}
}
+#define DEFAULT_PREFIX(for_route, for_ipv6) ( (for_route) ? ( (for_ipv6) ? 128 : 24 ) : ( (for_ipv6) ? 64 : 24 ) )
+
/* parse plen, fallback to defaults */
- if (plen_str)
- g_return_val_if_fail (get_one_int (plen_str, ipv6 ? 128 : 32,
- key_name, &plen), NULL);
- else {
- if (route)
- plen = ipv6 ? 128 : 24;
- else
- plen = ipv6 ? 64 : 24;
+ if (plen_str) {
+ if (!get_one_int (plen_str, ipv6 ? 128 : 32, key_name, &plen)) {
+ plen = DEFAULT_PREFIX (route, ipv6);
+ nm_log_warn (LOGD_SETTINGS, "keyfile: invalid prefix length '%s' in '%s.%s', defaulting to %d",
+ plen_str, setting_name, key_name, plen);
+ }
+ } else {
+ plen = DEFAULT_PREFIX (route, ipv6);
nm_log_warn (LOGD_SETTINGS, "keyfile: Missing prefix length in '%s.%s', defaulting to %d",
setting_name, key_name, plen);
}