diff options
author | Thomas Haller <thaller@redhat.com> | 2017-11-20 13:52:18 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2017-11-23 14:44:24 +0100 |
commit | 0f3873d01c0b8c547cdd49a0c990afbee00e366c (patch) | |
tree | 1335482fa07cde37720e3cc5f859e4191b9599cc | |
parent | 898567adfec49f22f23b633201c8d480b1a054fd (diff) | |
download | NetworkManager-0f3873d01c0b8c547cdd49a0c990afbee00e366c.tar.gz |
libnm: use stack allocated temporary string for property name
-rw-r--r-- | libnm-core/nm-setting.c | 25 | ||||
-rw-r--r-- | libnm/nm-vpn-service-plugin.c | 42 |
2 files changed, 32 insertions, 35 deletions
diff --git a/libnm-core/nm-setting.c b/libnm-core/nm-setting.c index 297887411d..5a06fd062b 100644 --- a/libnm-core/nm-setting.c +++ b/libnm-core/nm-setting.c @@ -1800,21 +1800,19 @@ get_secret_flags (NMSetting *setting, NMSettingSecretFlags *out_flags, GError **error) { - char *flags_prop; + gs_free char *name_to_free = NULL; NMSettingSecretFlags flags = NM_SETTING_SECRET_FLAG_NONE; if (verify_secret && !is_secret_prop (setting, secret_name, error)) { - if (out_flags) - *out_flags = NM_SETTING_SECRET_FLAG_NONE; + NM_SET_OUT (out_flags, NM_SETTING_SECRET_FLAG_NONE); return FALSE; } - flags_prop = g_strdup_printf ("%s-flags", secret_name); - g_object_get (G_OBJECT (setting), flags_prop, &flags, NULL); - g_free (flags_prop); - - if (out_flags) - *out_flags = flags; + g_object_get (G_OBJECT (setting), + nm_construct_name_a ("%s-flags", secret_name, &name_to_free), + &flags, + NULL); + NM_SET_OUT (out_flags, flags); return TRUE; } @@ -1850,14 +1848,15 @@ set_secret_flags (NMSetting *setting, NMSettingSecretFlags flags, GError **error) { - char *flags_prop; + gs_free char *name_to_free = NULL; if (verify_secret) g_return_val_if_fail (is_secret_prop (setting, secret_name, error), FALSE); - flags_prop = g_strdup_printf ("%s-flags", secret_name); - g_object_set (G_OBJECT (setting), flags_prop, flags, NULL); - g_free (flags_prop); + g_object_set (G_OBJECT (setting), + nm_construct_name_a ("%s-flags", secret_name, &name_to_free), + flags, + NULL); return TRUE; } diff --git a/libnm/nm-vpn-service-plugin.c b/libnm/nm-vpn-service-plugin.c index 79bd0f8193..2a7eb4ecf6 100644 --- a/libnm/nm-vpn-service-plugin.c +++ b/libnm/nm-vpn-service-plugin.c @@ -842,31 +842,29 @@ nm_vpn_service_plugin_get_secret_flags (GHashTable *data, const char *secret_name, NMSettingSecretFlags *out_flags) { - char *flag_name; - const char *val; - unsigned long tmp; - gboolean success = FALSE; - - g_return_val_if_fail (data != NULL, FALSE); - g_return_val_if_fail (secret_name != NULL, FALSE); - g_return_val_if_fail (out_flags != NULL, FALSE); - g_return_val_if_fail (*out_flags == NM_SETTING_SECRET_FLAG_NONE, FALSE); + gs_free char *flag_name_free = NULL; + const char *s; + gint64 t1; + NMSettingSecretFlags t0; - flag_name = g_strdup_printf ("%s-flags", secret_name); + g_return_val_if_fail (data, FALSE); + g_return_val_if_fail (out_flags && *out_flags == NM_SETTING_SECRET_FLAG_NONE, FALSE); + if (!secret_name || !*secret_name) + g_return_val_if_reached (FALSE); - /* Try new flags value first */ - val = g_hash_table_lookup (data, flag_name); - if (val) { - errno = 0; - tmp = strtoul (val, NULL, 10); - if (errno == 0 && tmp <= NM_SETTING_SECRET_FLAGS_ALL) { - *out_flags = (NMSettingSecretFlags) tmp; - success = TRUE; - } - } - g_free (flag_name); - return success; + s = g_hash_table_lookup (data, + nm_construct_name_a ("%s-flags", secret_name, &flag_name_free)); + if (!s) + return FALSE; + t1 = _nm_utils_ascii_str_to_int64 (s, 10, 0, G_MAXINT64, -1); + if (t1 == -1) + return FALSE; + t0 = (NMSettingSecretFlags) t1; + if ((gint64) t0 != t1) + return FALSE; + NM_SET_OUT (out_flags, t0); + return TRUE; } /*****************************************************************************/ |