diff options
author | Thomas Haller <thaller@redhat.com> | 2017-04-05 13:39:42 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2017-04-05 14:18:55 +0200 |
commit | 29dbc21c307967104e22681655e9de2c0ad6894f (patch) | |
tree | 919a2ed27dcfc7815ee4326204b2dfb8120eddea | |
parent | 3d4d1bedda59bca23799db4d7a437c4a3a0c4be7 (diff) | |
download | NetworkManager-29dbc21c307967104e22681655e9de2c0ad6894f.tar.gz |
cli: fix leak in add_vpn_secrets()
No need to copy @tmp variable, it was leaked.
-rw-r--r-- | clients/common/nm-secret-agent-simple.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/clients/common/nm-secret-agent-simple.c b/clients/common/nm-secret-agent-simple.c index b763bf8985..89cf156bda 100644 --- a/clients/common/nm-secret-agent-simple.c +++ b/clients/common/nm-secret-agent-simple.c @@ -399,20 +399,20 @@ add_vpn_secrets (NMSecretAgentSimpleRequest *request, { NMSettingVpn *s_vpn = nm_connection_get_setting_vpn (request->connection); const VpnPasswordName *secret_names, *p; - char *tmp = NULL; + const char *vpn_msg = NULL; char **iter; /* If hints are given, then always ask for what the hints require */ - if (request->hints && g_strv_length (request->hints)) { - for (iter = request->hints; iter && *iter; iter++) { - if (!tmp && g_str_has_prefix (*iter, VPN_MSG_TAG)) - tmp = g_strdup (*iter + strlen (VPN_MSG_TAG)); + if (request->hints) { + for (iter = request->hints; *iter; iter++) { + if (!vpn_msg && g_str_has_prefix (*iter, VPN_MSG_TAG)) + vpn_msg = &(*iter)[NM_STRLEN (VPN_MSG_TAG)]; else add_vpn_secret_helper (secrets, s_vpn, *iter, *iter); } } - if (msg) - *msg = g_strdup (tmp); + + NM_SET_OUT (msg, g_strdup (vpn_msg)); /* Now add what client thinks might be required, because hints may be empty or incomplete */ p = secret_names = nm_vpn_get_secret_names (nm_setting_vpn_get_service_type (s_vpn)); |