cli: cleanup nm_vpn_openconnect_authenticate_helper()

This commit is contained in:
Thomas Haller
2019-04-08 15:14:49 +02:00
parent b33e2b72da
commit c9ca7d0637

View File

@@ -181,18 +181,17 @@ _extract_variable_value (char *line, const char *tag, char **value)
{ {
char *p1, *p2; char *p1, *p2;
if (g_str_has_prefix (line, tag)) { if (!g_str_has_prefix (line, tag))
p1 = line + strlen (tag); return FALSE;
p2 = line + strlen (line) - 1;
if ((*p1 == '\'' || *p1 == '"') && (*p1 == *p2)) { p1 = line + strlen (tag);
p1++; p2 = line + strlen (line) - 1;
*p2 = '\0'; if ((*p1 == '\'' || *p1 == '"') && (*p1 == *p2)) {
} p1++;
if (value) *p2 = '\0';
*value = g_strdup (p1);
return TRUE;
} }
return FALSE; NM_SET_OUT (value, g_strdup (p1));
return TRUE;
} }
gboolean gboolean
@@ -204,9 +203,8 @@ nm_vpn_openconnect_authenticate_helper (const char *host,
GError **error) GError **error)
{ {
gs_free char *output = NULL; gs_free char *output = NULL;
gboolean ret; gs_free const char **output_v = NULL;
char **strv = NULL, **iter; const char *const*iter;
char *argv[4];
const char *path; const char *path;
const char *const DEFAULT_PATHS[] = { const char *const DEFAULT_PATHS[] = {
"/sbin/", "/sbin/",
@@ -223,17 +221,17 @@ nm_vpn_openconnect_authenticate_helper (const char *host,
if (!path) if (!path)
return FALSE; return FALSE;
argv[0] = (char *) path; if (!g_spawn_sync (NULL,
argv[1] = "--authenticate"; (char **) NM_MAKE_STRV (path, "--authenticate", host),
argv[2] = (char *) host; NULL,
argv[3] = NULL; G_SPAWN_SEARCH_PATH
| G_SPAWN_CHILD_INHERITS_STDIN,
ret = g_spawn_sync (NULL, argv, NULL, NULL,
G_SPAWN_SEARCH_PATH | G_SPAWN_CHILD_INHERITS_STDIN, NULL,
NULL, NULL, &output, NULL, &output,
status, error); NULL,
status,
if (!ret) error))
return FALSE; return FALSE;
/* Parse output and set cookie, gateway and gwcert /* 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' * HOST='1.2.3.4'
* FINGERPRINT='sha1:32bac90cf09a722e10ecc1942c67fe2ac8c21e2e' * FINGERPRINT='sha1:32bac90cf09a722e10ecc1942c67fe2ac8c21e2e'
*/ */
strv = g_strsplit_set (output ?: "", "\r\n", 0); output_v = nm_utils_strsplit_set_with_empty (output, "\r\n");
for (iter = strv; iter && *iter; iter++) { for (iter = output_v; iter && *iter; iter++) {
_extract_variable_value (*iter, "COOKIE=", cookie); char *s_mutable = (char *) *iter;
_extract_variable_value (*iter, "HOST=", gateway);
_extract_variable_value (*iter, "FINGERPRINT=", gwcert); _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; return TRUE;
} }