diff options
author | Thomas Haller <thaller@redhat.com> | 2014-11-11 16:09:08 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2014-11-11 16:09:08 +0100 |
commit | f2097ca482853aef7a80674cb24cb0c5cc2f9775 (patch) | |
tree | 817471621ca711ba0d473352f28e6b9f007508c1 | |
parent | 1e8b681d4f10c2b5e9478ec4972cad64aa1f8e7c (diff) | |
download | NetworkManager-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.c | 18 |
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); } |