Commit a73b653b authored by Daniel Lenski's avatar Daniel Lenski

Merge branch 'remove_protocol_specific_values_from_global_state_object' into 'master'

CSD XML tag and nostub are entirely protocol-specific and used in only one place

See merge request openconnect/openconnect!159
parents c89062c5 0c53ca91
......@@ -386,6 +386,29 @@ static int xmlnode_get_text(xmlNode *xml_node, const char *name, char **var)
* 2) The new <form> tag tends to omit the method/action properties.
*/
/* Translate platform names (derived from AnyConnect) into the relevant
* CSD tag names
*/
static inline const char *csd_tag_name(struct openconnect_info *vpninfo)
{
if (!strcmp(vpninfo->platname, "mac-intel"))
return "csdMac";
else if (!strcmp(vpninfo->platname, "win"))
return "csd";
else
/* linux, linux-64, android, apple-ios */
return "csdLinux";
}
/* Ignore stubs on mobile platforms */
static inline int csd_use_stub(struct openconnect_info *vpninfo)
{
if (!strcmp(vpninfo->platname, "android") || !strcmp(vpninfo->platname, "apple-ios"))
return 0;
else
return 1;
}
static int parse_auth_node(struct openconnect_info *vpninfo, xmlNode *xml_node,
struct oc_auth_form *form)
{
......@@ -434,9 +457,9 @@ static int parse_auth_node(struct openconnect_info *vpninfo, xmlNode *xml_node,
nodes; one with token/ticket and one with the URLs. Process them both
the same and rely on the fact that xmlnode_get_prop() will not *clear*
the variable if no such property is found. */
if (!vpninfo->csd_scriptname && xmlnode_is_named(xml_node, vpninfo->csd_xmltag)) {
if (!vpninfo->csd_scriptname && xmlnode_is_named(xml_node, csd_tag_name(vpninfo))) {
/* ignore the CSD trojan binary on mobile platforms */
if (!vpninfo->csd_nostub)
if (csd_use_stub(vpninfo))
xmlnode_get_prop(xml_node, "stuburl", &vpninfo->csd_stuburl);
xmlnode_get_prop(xml_node, "starturl", &vpninfo->csd_starturl);
xmlnode_get_prop(xml_node, "waiturl", &vpninfo->csd_waiturl);
......
......@@ -305,18 +305,6 @@ int openconnect_set_reported_os(struct openconnect_info *vpninfo,
#endif
}
if (!strcmp(os, "mac-intel"))
vpninfo->csd_xmltag = "csdMac";
else if (!strcmp(os, "linux") || !strcmp(os, "linux-64"))
vpninfo->csd_xmltag = "csdLinux";
else if (!strcmp(os, "android") || !strcmp(os, "apple-ios")) {
vpninfo->csd_xmltag = "csdLinux";
vpninfo->csd_nostub = 1;
} else if (!strcmp(os, "win"))
vpninfo->csd_xmltag = "csd";
else
return -EINVAL;
STRDUP(vpninfo->platname, os);
return 0;
}
......
......@@ -402,8 +402,6 @@ struct openconnect_info {
uint32_t esp_magic; /* GlobalProtect magic ping address (network-endian) */
int tncc_fd; /* For Juniper TNCC */
const char *csd_xmltag;
int csd_nostub;
char *platname;
char *mobile_platform_version;
char *mobile_device_type;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment