diff options
author | Thomas Haller <thaller@redhat.com> | 2019-04-08 15:14:49 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2019-04-10 15:05:57 +0200 |
commit | c9ca7d06374e109e40e80c5e67dc98e21d4ff89f (patch) | |
tree | b014ae6af3802421719e56b636026e1c972c71a0 /clients/common | |
parent | b33e2b72da36717dd88beed2a0e0d42a6826f53a (diff) | |
download | NetworkManager-c9ca7d06374e109e40e80c5e67dc98e21d4ff89f.tar.gz |
cli: cleanup nm_vpn_openconnect_authenticate_helper()
Diffstat (limited to 'clients/common')
-rw-r--r-- | clients/common/nm-vpn-helpers.c | 61 |
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; } |