mirror of https://github.com/OpenVPN/openvpn-gui
fix:
1. Replace FLAG_SAVE_KEY_PASS instead of FLAG_DISABLE_SAVE_PASS in GenericPassDialogFun 2. Honor FLAG_DISABLE_SAVE_PASS flag in GenericPassDialogFunpull/753/head
parent
77deef95f0
commit
a17335b1b2
53
openvpn.c
53
openvpn.c
|
@ -890,29 +890,36 @@ GenericPassDialogFunc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
ID_TXT_DESCRIPTION,
|
ID_TXT_DESCRIPTION,
|
||||||
LoadLocalizedString(IDS_NFO_TOKEN_PASSWORD_REQUEST, param->id));
|
LoadLocalizedString(IDS_NFO_TOKEN_PASSWORD_REQUEST, param->id));
|
||||||
|
|
||||||
if (RecallSmartCardPin(param->c->config_name, password))
|
if (param->c->flags & FLAG_DISABLE_SAVE_PASS)
|
||||||
{
|
{
|
||||||
SetDlgItemTextW(hwndDlg, ID_EDT_RESPONSE, password);
|
ShowWindow(GetDlgItem(hwndDlg, ID_CHK_SAVE_PASS), SW_HIDE);
|
||||||
Button_SetCheck(GetDlgItem(hwndDlg, ID_CHK_SAVE_PASS), BST_CHECKED);
|
}
|
||||||
lenableOKBtn = TRUE;
|
else
|
||||||
|
{
|
||||||
if (password[0] != L'\0' && param->c->failed_auth_attempts == 0)
|
if (RecallSmartCardPin(param->c->config_name, password))
|
||||||
{
|
{
|
||||||
/* smart card pin available: skip dialog
|
SetDlgItemTextW(hwndDlg, ID_EDT_RESPONSE, password);
|
||||||
* if silent_connection is on, else auto submit after a few seconds.
|
Button_SetCheck(GetDlgItem(hwndDlg, ID_CHK_SAVE_PASS), BST_CHECKED);
|
||||||
* User can interrupt.
|
lenableOKBtn = TRUE;
|
||||||
*/
|
|
||||||
SetFocus(GetDlgItem(hwndDlg, IDOK));
|
|
||||||
UINT timeout = o.silent_connection ? 0 : 6; /* in seconds */
|
|
||||||
AutoCloseSetup(hwndDlg, IDOK, timeout, ID_TXT_WARNING, IDS_NFO_AUTO_CONNECT);
|
|
||||||
}
|
|
||||||
else if (param->c->failed_auth_attempts)
|
|
||||||
{
|
|
||||||
SendMessage(
|
|
||||||
GetDlgItem(hwndDlg, ID_EDT_RESPONSE), EM_SETSEL, 0, MAKELONG(0, -1));
|
|
||||||
}
|
|
||||||
|
|
||||||
SecureZeroMemory(password, sizeof(password));
|
if (password[0] != L'\0' && param->c->failed_auth_attempts == 0)
|
||||||
|
{
|
||||||
|
/* smart card pin available: skip dialog
|
||||||
|
* if silent_connection is on, else auto submit after a few seconds.
|
||||||
|
* User can interrupt.
|
||||||
|
*/
|
||||||
|
SetFocus(GetDlgItem(hwndDlg, IDOK));
|
||||||
|
UINT timeout = o.silent_connection ? 0 : 6; /* in seconds */
|
||||||
|
AutoCloseSetup(hwndDlg, IDOK, timeout, ID_TXT_WARNING, IDS_NFO_AUTO_CONNECT);
|
||||||
|
}
|
||||||
|
else if (param->c->failed_auth_attempts)
|
||||||
|
{
|
||||||
|
SendMessage(
|
||||||
|
GetDlgItem(hwndDlg, ID_EDT_RESPONSE), EM_SETSEL, 0, MAKELONG(0, -1));
|
||||||
|
}
|
||||||
|
|
||||||
|
SecureZeroMemory(password, sizeof(password));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -974,8 +981,8 @@ GenericPassDialogFunc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ID_CHK_SAVE_PASS:
|
case ID_CHK_SAVE_PASS:
|
||||||
param->c->flags ^= FLAG_SAVE_AUTH_PASS;
|
param->c->flags ^= FLAG_SAVE_KEY_PASS;
|
||||||
if (param->c->flags & FLAG_SAVE_AUTH_PASS)
|
if (param->c->flags & FLAG_SAVE_KEY_PASS)
|
||||||
{
|
{
|
||||||
Button_SetCheck(GetDlgItem(hwndDlg, ID_CHK_SAVE_PASS), BST_CHECKED);
|
Button_SetCheck(GetDlgItem(hwndDlg, ID_CHK_SAVE_PASS), BST_CHECKED);
|
||||||
}
|
}
|
||||||
|
@ -1043,7 +1050,7 @@ GenericPassDialogFunc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
ManagementCommandFromInput(param->c, fmt, hwndDlg, ID_EDT_RESPONSE);
|
ManagementCommandFromInput(param->c, fmt, hwndDlg, ID_EDT_RESPONSE);
|
||||||
free(fmt);
|
free(fmt);
|
||||||
|
|
||||||
if (param->flags & FLAG_PASS_TOKEN && param->c->flags & FLAG_SAVE_AUTH_PASS)
|
if (param->flags & FLAG_PASS_TOKEN && param->c->flags & FLAG_SAVE_KEY_PASS)
|
||||||
{
|
{
|
||||||
SaveSmartCardPin(param->c->config_name, password);
|
SaveSmartCardPin(param->c->config_name, password);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue