From 5c009d449e19f38e22a940ea517fde617761f037 Mon Sep 17 00:00:00 2001 From: Mounir IDRASSI Date: Thu, 8 Jun 2017 01:16:05 +0200 Subject: Windows: Validate XML format of EFI DcsProp after user editing and before writing it to disk. Enhance UI handling of DcsProp editing and PlatformInfo display. --- src/Common/Dlgcode.c | 25 ++++++++++++++++++------- src/Common/Dlgcode.h | 1 + src/Common/Language.xml | 6 ++++++ 3 files changed, 25 insertions(+), 7 deletions(-) (limited to 'src/Common') diff --git a/src/Common/Dlgcode.c b/src/Common/Dlgcode.c index 67e6b379..33e02514 100644 --- a/src/Common/Dlgcode.c +++ b/src/Common/Dlgcode.c @@ -3361,13 +3361,13 @@ wstring GetDecoyOsInstructionsString (void) } struct _TEXT_EDIT_DIALOG_PARAM { - int Type; + BOOL ReadOnly; std::string& Text; const WCHAR* Title; HWND Parent; - _TEXT_EDIT_DIALOG_PARAM(int _type, const WCHAR* title, std::string& _text) : Title(title), Text(_text), Type(_type) {} + _TEXT_EDIT_DIALOG_PARAM(BOOL _readOnly, const WCHAR* title, std::string& _text) : Title(title), Text(_text), ReadOnly(_readOnly) {} _TEXT_EDIT_DIALOG_PARAM& operator=( const _TEXT_EDIT_DIALOG_PARAM& other) { - Type = other.Type; + ReadOnly = other.ReadOnly; Text = other.Text; Title = other.Title; return *this; @@ -3375,9 +3375,9 @@ struct _TEXT_EDIT_DIALOG_PARAM { }; typedef struct _TEXT_EDIT_DIALOG_PARAM TEXT_INFO_DIALOG_PARAM,*TEXT_INFO_DIALOG_PARAM_PTR; -INT_PTR TextEditDialogBox (int type, HWND parent, const WCHAR* Title, std::string& text) +INT_PTR TextEditDialogBox (BOOL readOnly, HWND parent, const WCHAR* Title, std::string& text) { - TEXT_INFO_DIALOG_PARAM pm(type, Title, text); + TEXT_INFO_DIALOG_PARAM pm(readOnly, Title, text); return DialogBoxParamW (hInst, MAKEINTRESOURCEW (IDD_TEXT_EDIT_DLG), parent, (DLGPROC) TextEditDlgProc, (LPARAM) &pm); } @@ -3398,6 +3398,14 @@ BOOL CALLBACK TextEditDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPa // Left margin for rich edit text field SendMessage (GetDlgItem (hwndDlg, IDC_INFO_BOX_TEXT), EM_SETMARGINS, (WPARAM) EC_LEFTMARGIN, (LPARAM) CompensateXDPI (4)); + if (prm->ReadOnly) + { + // switch rich edit control to ReadOnly + SendMessage(GetDlgItem (hwndDlg, IDC_INFO_BOX_TEXT), ES_READONLY, TRUE, 0); + // hide cancel button + ShowWindow(GetDlgItem(hwndDlg, IDCANCEL), SW_HIDE); + } + SendMessage (hwndDlg, TC_APPMSG_LOAD_TEXT_BOX_CONTENT, 0, 0); } return 0; @@ -3405,8 +3413,11 @@ BOOL CALLBACK TextEditDlgProc (HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lPa case WM_COMMAND: if (lw == IDOK ) { - prm->Text.resize(GetWindowTextLengthA (GetDlgItem (hwndDlg, IDC_INFO_BOX_TEXT)) + 1); - GetWindowTextA (GetDlgItem (hwndDlg, IDC_INFO_BOX_TEXT), &(prm->Text)[0], prm->Text.size()); + if (!prm->ReadOnly) + { + prm->Text.resize(GetWindowTextLengthA (GetDlgItem (hwndDlg, IDC_INFO_BOX_TEXT)) + 1); + GetWindowTextA (GetDlgItem (hwndDlg, IDC_INFO_BOX_TEXT), &(prm->Text)[0], prm->Text.size()); + } NormalCursor (); EndDialog (hwndDlg, IDOK); return 1; diff --git a/src/Common/Dlgcode.h b/src/Common/Dlgcode.h index 1a66e102..a585218c 100644 --- a/src/Common/Dlgcode.h +++ b/src/Common/Dlgcode.h @@ -624,6 +624,7 @@ inline std::wstring AppendSrcPos (const wchar_t* msg, const char* srcPos) return std::wstring (msg? msg : L"") + L"\n\nSource: " + SingleStringToWide (srcPos); } void UpdateMountableHostDeviceList (); +INT_PTR TextEditDialogBox (BOOL readOnly, HWND parent, const WCHAR* Title, std::string& text); // Display a wait dialog while calling the provided callback with the given parameter typedef void (CALLBACK* WaitThreadProc)(void* pArg, HWND hWaitDlg); diff --git a/src/Common/Language.xml b/src/Common/Language.xml index a2c1312f..36c3a42a 100644 --- a/src/Common/Language.xml +++ b/src/Common/Language.xml @@ -1415,6 +1415,12 @@ The Rescue Disk image has been created and stored in this file:\n%s\n\nNow you need to extract the Rescue Disk image to a USB stick that is formatted as FAT/FAT32.\n\nIMPORTANT: Note that the zip file must be extracted directly to the root of the USB stick. For example, if the drive letter of the USB stick is E: then extracting the zip file should create a folder E:\\EFI on the USB stick.\n\nAfter you create the Rescue Disk, select 'System' > 'Verify Rescue Disk' to verify that it has been correctly created. Use Secure Desktop for password entry The volume file size specified in the command line is incompatible with selected ReFS filesystem. + Edit Boot Loader Configuration + Display EFI Platform Information + Boot Loader Configuration File + EFI Platform Information + WARNING: Inexperienced users should never attempt to manually edit boot loader configurations.\n\nContinue? + WARNING: Failed to validate the XML format of the Boot Loader configuration. Please check your modifications. -- cgit v1.2.3