summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2019-04-08 15:14:49 +0200
committerThomas Haller <thaller@redhat.com>2019-04-10 15:05:57 +0200
commitc9ca7d06374e109e40e80c5e67dc98e21d4ff89f (patch)
treeb014ae6af3802421719e56b636026e1c972c71a0
parentb33e2b72da36717dd88beed2a0e0d42a6826f53a (diff)
downloadNetworkManager-c9ca7d06374e109e40e80c5e67dc98e21d4ff89f.tar.gz
cli: cleanup nm_vpn_openconnect_authenticate_helper()
-rw-r--r--clients/common/nm-vpn-helpers.c61
1 files changed, 30 insertions, 31 deletions
diff --git a/clients/common/nm-vpn-helpers.c b/clients/common/nm-vpn-helpers.c
index fbac26d82e..47a827409f 100644
--- a/clients/common/nm-vpn-helpers.c
+++ b/clients/common/nm-vpn-helpers.c
@@ -181,18 +181,17 @@ _extract_variable_value (char *line, const char *tag, char **value)
{
char *p1, *p2;
- if (g_str_has_prefix (line, tag)) {
- p1 = line + strlen (tag);
- p2 = line + strlen (line) - 1;
- if ((*p1 == '\'' || *p1 == '"') && (*p1 == *p2)) {
- p1++;
- *p2 = '\0';
- }
- if (value)
- *value = g_strdup (p1);
- return TRUE;
+ if (!g_str_has_prefix (line, tag))
+ return FALSE;
+
+ p1 = line + strlen (tag);
+ p2 = line + strlen (line) - 1;
+ if ((*p1 == '\'' || *p1 == '"') && (*p1 == *p2)) {
+ p1++;
+ *p2 = '\0';
}
- return FALSE;
+ NM_SET_OUT (value, g_strdup (p1));
+ return TRUE;
}
gboolean
@@ -204,9 +203,8 @@ nm_vpn_openconnect_authenticate_helper (const char *host,
GError **error)
{
gs_free char *output = NULL;
- gboolean ret;
- char **strv = NULL, **iter;
- char *argv[4];
+ gs_free const char **output_v = NULL;
+ const char *const*iter;
const char *path;
const char *const DEFAULT_PATHS[] = {
"/sbin/",
@@ -223,17 +221,17 @@ nm_vpn_openconnect_authenticate_helper (const char *host,
if (!path)
return FALSE;
- argv[0] = (char *) path;
- argv[1] = "--authenticate";
- argv[2] = (char *) host;
- argv[3] = NULL;
-
- ret = g_spawn_sync (NULL, argv, NULL,
- G_SPAWN_SEARCH_PATH | G_SPAWN_CHILD_INHERITS_STDIN,
- NULL, NULL, &output, NULL,
- status, error);
-
- if (!ret)
+ if (!g_spawn_sync (NULL,
+ (char **) NM_MAKE_STRV (path, "--authenticate", host),
+ NULL,
+ G_SPAWN_SEARCH_PATH
+ | G_SPAWN_CHILD_INHERITS_STDIN,
+ NULL,
+ NULL,
+ &output,
+ NULL,
+ status,
+ error))
return FALSE;
/* Parse output and set cookie, gateway and gwcert
@@ -242,13 +240,14 @@ nm_vpn_openconnect_authenticate_helper (const char *host,
* HOST='1.2.3.4'
* FINGERPRINT='sha1:32bac90cf09a722e10ecc1942c67fe2ac8c21e2e'
*/
- strv = g_strsplit_set (output ?: "", "\r\n", 0);
- for (iter = strv; iter && *iter; iter++) {
- _extract_variable_value (*iter, "COOKIE=", cookie);
- _extract_variable_value (*iter, "HOST=", gateway);
- _extract_variable_value (*iter, "FINGERPRINT=", gwcert);
+ output_v = nm_utils_strsplit_set_with_empty (output, "\r\n");
+ for (iter = output_v; iter && *iter; iter++) {
+ char *s_mutable = (char *) *iter;
+
+ _extract_variable_value (s_mutable, "COOKIE=", cookie);
+ _extract_variable_value (s_mutable, "HOST=", gateway);
+ _extract_variable_value (s_mutable, "FINGERPRINT=", gwcert);
}
- g_strfreev (strv);
return TRUE;
}