From b30cdee85566238402e0d4bf06a434dc0a89b681 Mon Sep 17 00:00:00 2001 From: Kevin Cernekee Date: Sat, 31 May 2014 19:09:55 -0700 Subject: [PATCH] AuthFormHandler: Fix another setAuthgroup() corner case Make sure that autogroupOpt.value always gets populated if we have a saved authgroup. If we don't have a saved authgroup but the gateway offers an authgroup dropdown, don't try to log on using batch mode. Signed-off-by: Kevin Cernekee --- src/app/openconnect/AuthFormHandler.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/app/openconnect/AuthFormHandler.java b/src/app/openconnect/AuthFormHandler.java index cf695382..52b7b1f6 100644 --- a/src/app/openconnect/AuthFormHandler.java +++ b/src/app/openconnect/AuthFormHandler.java @@ -321,18 +321,18 @@ private void saveAndStore() { // If the user had saved a preferred authgroup, submit a NEWGROUP request before rendering the form public boolean setAuthgroup() { - String authgroup = getStringPref("authgroup"); - - if (mAuthgroupSet || authgroup.equals("")) { + LibOpenConnect.FormOpt opt = mForm.authgroupOpt; + if (opt == null) { return false; } - LibOpenConnect.FormOpt opt = mForm.authgroupOpt; - if (opt == null) { + String authgroup = getStringPref("authgroup"); + if (authgroup.equals("")) { return false; } + LibOpenConnect.FormChoice selected = opt.choices.get(mForm.authgroupSelection); - if (authgroup.equals(selected.name)) { + if (mAuthgroupSet || authgroup.equals(selected.name)) { // already good to go opt.value = authgroup; return false; @@ -369,6 +369,12 @@ public Object earlyReturn() { return null; } opt.value = defval; + break; + case LibOpenConnect.OC_FORM_OPT_SELECT: + if (opt.value == null) { + return null; + } + break; } } return LibOpenConnect.OC_FORM_RESULT_OK;