summaryrefslogtreecommitdiff
path: root/libnm-util/nm-setting-vpn.c
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2010-06-28 15:15:23 -0700
committerDan Williams <dcbw@redhat.com>2010-06-28 15:15:23 -0700
commit6893b3d0dde4e05ee47b60fcba8e2710346722a4 (patch)
treef1285f6baee557e21d2009dc2c7d9e046c738c13 /libnm-util/nm-setting-vpn.c
parent3d4b6163b97179b5dd0e55c66fee9ba3aef5e983 (diff)
downloadNetworkManager-6893b3d0dde4e05ee47b60fcba8e2710346722a4.tar.gz
libnm-util: ensure empty VPN secrets are not used (rh #587784)
Diffstat (limited to 'libnm-util/nm-setting-vpn.c')
-rw-r--r--libnm-util/nm-setting-vpn.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/libnm-util/nm-setting-vpn.c b/libnm-util/nm-setting-vpn.c
index cef8323432..53b609e2d8 100644
--- a/libnm-util/nm-setting-vpn.c
+++ b/libnm-util/nm-setting-vpn.c
@@ -248,6 +248,7 @@ static gboolean
update_one_secret (NMSetting *setting, const char *key, GValue *value, GError **error)
{
NMSettingVPNPrivate *priv = NM_SETTING_VPN_GET_PRIVATE (setting);
+ char *str;
g_return_val_if_fail (key != NULL, FALSE);
g_return_val_if_fail (value != NULL, FALSE);
@@ -259,8 +260,17 @@ update_one_secret (NMSetting *setting, const char *key, GValue *value, GError **
return FALSE;
}
- g_hash_table_insert (priv->secrets, g_strdup (key), g_value_dup_string (value));
- return FALSE;
+ str = g_value_dup_string (value);
+ if (!str || !strlen (str)) {
+ g_set_error (error, NM_SETTING_ERROR,
+ NM_SETTING_ERROR_PROPERTY_TYPE_MISMATCH,
+ "Secret %s was empty", key);
+ g_free (str);
+ return FALSE;
+ }
+
+ g_hash_table_insert (priv->secrets, g_strdup (key), str);
+ return TRUE;
}
static void