diff options
author | Beniamino Galvani <bgalvani@redhat.com> | 2018-10-22 08:26:45 +0200 |
---|---|---|
committer | Beniamino Galvani <bgalvani@redhat.com> | 2018-10-23 09:09:42 +0200 |
commit | d0a99176a77b70fd52e607817976f60c3b4d9337 (patch) | |
tree | 37067b0589aba3b6846b5e6017be925ccd8f565b | |
parent | 7c7e4cf1343dde0fda3464a5c23b894a6c8c6027 (diff) | |
download | NetworkManager-d0a99176a77b70fd52e607817976f60c3b4d9337.tar.gz |
initrd: cmdline-reader: fix setting uint properties
Previously a uint property was assigned with a guint64 value, which
has a different size. Fix this and add a warning when the read value
can't be converted.
Fixes: ecc074b2f8a6240d50f590c898b33158806b51a1
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues/66
-rw-r--r-- | src/initrd/nmi-cmdline-reader.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/initrd/nmi-cmdline-reader.c b/src/initrd/nmi-cmdline-reader.c index fa83a9edd5..cd879db66a 100644 --- a/src/initrd/nmi-cmdline-reader.c +++ b/src/initrd/nmi-cmdline-reader.c @@ -138,9 +138,17 @@ _base_setting_set (NMConnection *connection, const char *property, const char *v setting = nm_connection_get_setting_by_name (connection, type_name); - if (G_IS_PARAM_SPEC_UINT (spec)) - g_object_set (setting, property, g_ascii_strtoull (value, NULL, 10), NULL); - else if (G_IS_PARAM_SPEC_STRING (spec)) + if (G_IS_PARAM_SPEC_UINT (spec)) { + guint v; + + v = _nm_utils_ascii_str_to_int64 (value, 10, 0, G_MAXUINT, 0); + if ( errno + || !nm_g_object_set_property_uint (G_OBJECT (setting), property, v, NULL)) { + _LOGW (LOGD_CORE, + "Could not set property '%s.%s' to '%s'", + type_name, property, value); + } + } else if (G_IS_PARAM_SPEC_STRING (spec)) g_object_set (setting, property, value, NULL); else _LOGW (LOGD_CORE, "Don't know how to set '%s' of %s", property, type_name); |