]> www.infradead.org Git - users/dwmw2/openconnect.git/commitdiff
Move user credentials retrieval.
authorNick Krylov <krylovna@gmail.com>
Tue, 22 Jun 2021 17:46:31 +0000 (20:46 +0300)
committerNick Krylov <krylovna@gmail.com>
Tue, 22 Jun 2021 17:46:31 +0000 (20:46 +0300)
We don't need them with certificate-based login. Avoid goto.

Signed-off-by: Nick Krylov <krylovna@gmail.com>
cp.c

diff --git a/cp.c b/cp.c
index 1b2c42eaa5b029e415aa1b4ffe3c5a12059771cc..ac20523104f48ae387f8fae28b767c52d0d5a54e 100644 (file)
--- a/cp.c
+++ b/cp.c
@@ -788,34 +788,32 @@ static int do_get_cookie(struct openconnect_info *vpninfo)
     struct oc_text_buf *request_body = buf_alloc();
     int result = 1;
 
-    struct oc_auth_form *form = get_user_creds(vpninfo);
-    if (!form) {
-           result = 0;
-           goto out;
-    }
+
     if (vpninfo->certinfo[0].cert) {
-           /* XX: we've already set urlpath to the server's connect_with_certificate_url */
-           buf_append(request_body, CCCclientRequestCert);
+        /* XX: we've already set urlpath to the server's connect_with_certificate_url */
+        buf_append(request_body, CCCclientRequestCert);
     } else {
-           buf_append(request_body, CCCclientRequestUserPass);
-           struct oc_form_opt *opt;
-           for (opt = form->opts; opt; opt = opt->next) {
-                   buf_append(request_body, "        :%s (", opt->name);
-                   buf_append_scrambled(request_body, opt->_value);
-                   buf_append(request_body, ")\n");
-           }
-           buf_append(request_body, "    )\n)");
-           free_auth_form(form);
+        struct oc_auth_form *form = get_user_creds(vpninfo);
+        if (!form) {
+            result = 0;
+        } else {
+            buf_append(request_body, CCCclientRequestUserPass);
+            struct oc_form_opt *opt;
+            for (opt = form->opts; opt; opt = opt->next) {
+                buf_append(request_body, "        :%s (", opt->name);
+                buf_append_scrambled(request_body, opt->_value);
+                buf_append(request_body, ")\n");
+            }
+            buf_append(request_body, "    )\n)");
+            free_auth_form(form);
+        }
     }
 
-    if (buf_error(request_body))
-           goto out;
-
-    result = https_request_wrapper(vpninfo, request_body, &resp_buf, 0);
-    if (result > 0)
-           result = handle_login_reply(resp_buf, vpninfo);
-
-out:
+    if (result && !buf_error(request_body)) {
+        result = https_request_wrapper(vpninfo, request_body, &resp_buf, 0);
+        if (result > 0)
+            result = handle_login_reply(resp_buf, vpninfo);
+    }
     buf_free(request_body);
     FREE_PASS(resp_buf);
     return result;