[PATCH 3/4] CSD: pass trojan URI to wrapper when use --csd-skip-download
Antonio Borneo
borneo.antonio at gmail.com
Sun Dec 6 00:21:15 PST 2015
If wrapper needs the trojan binary, it can still use the URI
to download it.
Signed-off-by: Antonio Borneo <borneo.antonio at gmail.com>
---
auth.c | 12 +++++++-----
library.c | 1 +
openconnect.8.in | 3 +++
3 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/auth.c b/auth.c
index a749474..7476ef0 100644
--- a/auth.c
+++ b/auth.c
@@ -422,9 +422,7 @@ static int parse_auth_node(struct openconnect_info *vpninfo, xmlNode *xml_node,
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)) {
- /* ignore the CSD trojan binary on mobile platforms */
- if (!vpninfo->csd_nostub)
- xmlnode_get_prop(xml_node, "stuburl", &vpninfo->csd_stuburl);
+ 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);
vpninfo->csd_preurl = strdup(vpninfo->urlpath);
@@ -1096,7 +1094,11 @@ static int run_csd_script(struct openconnect_info *vpninfo, char *buf, int bufle
if (vpninfo->csd_wrapper)
csd_argv[i++] = openconnect_utf8_to_legacy(vpninfo,
vpninfo->csd_wrapper);
- csd_argv[i++] = fname;
+ if (!vpninfo->csd_nostub || !vpninfo->csd_stuburl)
+ csd_argv[i++] = fname;
+ else
+ if (asprintf(&csd_argv[i++], "\"https://%s%s\"", vpninfo->hostname, vpninfo->csd_stuburl) == -1)
+ goto out;
csd_argv[i++] = (char *)"-ticket";
if (asprintf(&csd_argv[i++], "\"%s\"", vpninfo->csd_ticket) == -1)
goto out;
@@ -1330,7 +1332,7 @@ newgroup:
}
/* fetch the CSD program, if available */
- if (vpninfo->csd_stuburl) {
+ if (!vpninfo->csd_nostub && vpninfo->csd_stuburl) {
vpninfo->redirect_url = vpninfo->csd_stuburl;
vpninfo->csd_stuburl = NULL;
handle_redirect(vpninfo);
diff --git a/library.c b/library.c
index cc50eac..bd87cc5 100644
--- a/library.c
+++ b/library.c
@@ -190,6 +190,7 @@ int openconnect_set_reported_os(struct openconnect_info *vpninfo,
vpninfo->csd_xmltag = "csdLinux";
else if (!strcmp(os, "android") || !strcmp(os, "apple-ios")) {
vpninfo->csd_xmltag = "csdLinux";
+ /* ignore the CSD trojan binary on mobile platforms */
vpninfo->csd_nostub = 1;
} else if (!strcmp(os, "win"))
vpninfo->csd_xmltag = "csd";
diff --git a/openconnect.8.in b/openconnect.8.in
index 8f635dd..ce1653f 100644
--- a/openconnect.8.in
+++ b/openconnect.8.in
@@ -207,6 +207,9 @@ instead of the CSD (Cisco Secure Desktop) script.
.TP
.B \-\-csd\-skip\-download
Do not download the CSD (Cisco Secure Desktop) script.
+If an alternative script is specified with
+.B \-\-csd\-wrapper
+then it will receive the URI of the CSD (Cisco Secure Desktop) script.
.TP
.B \-m,\-\-mtu=MTU
Request
--
2.6.2
More information about the openconnect-devel
mailing list