diff options
author | Mounir IDRASSI <mounir.idrassi@idrix.fr> | 2018-08-16 01:08:37 +0200 |
---|---|---|
committer | Mounir IDRASSI <mounir.idrassi@idrix.fr> | 2018-08-16 01:12:46 +0200 |
commit | 558746c4826ca5f5a574233b484a74ca19706ccc (patch) | |
tree | 1025c004fcafd45d587b4e577ccf287dccc8719b | |
parent | c2b69b248c004e097ffc1aa4c0dde0ddd0ba54f7 (diff) | |
download | VeraCrypt-558746c4826ca5f5a574233b484a74ca19706ccc.tar.gz VeraCrypt-558746c4826ca5f5a574233b484a74ca19706ccc.zip |
Windows: Fix regression that caused the system encryption wizard to crash when displaying password field.
-rw-r--r-- | src/Common/Dlgcode.c | 9 | ||||
-rw-r--r-- | src/Format/Tcformat.c | 6 |
2 files changed, 10 insertions, 5 deletions
diff --git a/src/Common/Dlgcode.c b/src/Common/Dlgcode.c index 88713ac1..3fd6e768 100644 --- a/src/Common/Dlgcode.c +++ b/src/Common/Dlgcode.c @@ -1310,10 +1310,15 @@ static LRESULT CALLBACK NormalPwdFieldProc (HWND hwnd, UINT message, WPARAM wPar void ToNormalPwdField (HWND hwndDlg, UINT ctrlId) { HWND hwndCtrl = GetDlgItem (hwndDlg, ctrlId); + WNDPROC originalwp = (WNDPROC) GetWindowLongPtrW (hwndCtrl, GWLP_USERDATA); SendMessage (hwndCtrl, EM_LIMITTEXT, MAX_PASSWORD, 0); - SetWindowLongPtrW (hwndCtrl, GWLP_USERDATA, (LONG_PTR) GetWindowLongPtrW (hwndCtrl, GWLP_WNDPROC)); - SetWindowLongPtrW (hwndCtrl, GWLP_WNDPROC, (LONG_PTR) NormalPwdFieldProc); + // only change WNDPROC if not changed already + if (!originalwp) + { + SetWindowLongPtrW (hwndCtrl, GWLP_USERDATA, (LONG_PTR) GetWindowLongPtrW (hwndCtrl, GWLP_WNDPROC)); + SetWindowLongPtrW (hwndCtrl, GWLP_WNDPROC, (LONG_PTR) NormalPwdFieldProc); + } } diff --git a/src/Format/Tcformat.c b/src/Format/Tcformat.c index 54379715..2f8b9b2f 100644 --- a/src/Format/Tcformat.c +++ b/src/Format/Tcformat.c @@ -4301,6 +4301,9 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa hPasswordInputField = GetDlgItem (hwndDlg, IDC_PASSWORD); hVerifyPasswordInputField = GetDlgItem (hwndDlg, IDC_VERIFY); + ToNormalPwdField (hwndDlg, IDC_PASSWORD); + ToNormalPwdField (hwndDlg, IDC_VERIFY); + if (SysEncInEffect ()) { ToBootPwdField (hwndDlg, IDC_PASSWORD); @@ -4345,9 +4348,6 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa StringCbCopyW (str, sizeof(str), GetString ("PASSWORD_HELP")); } - ToNormalPwdField (hwndDlg, IDC_PASSWORD); - ToNormalPwdField (hwndDlg, IDC_VERIFY); - SetPassword (hwndDlg, IDC_PASSWORD, szRawPassword); SetPassword (hwndDlg, IDC_VERIFY, szVerify); |