Commit b8b87e55 authored by Hugh McMaster's avatar Hugh McMaster Committed by Alexandre Julliard

regedit: Limit REG_DWORD/REG_QWORD input length by value type and format.

parent e604f3e2
...@@ -184,7 +184,15 @@ static INT_PTR CALLBACK modify_string_dlgproc(HWND hwndDlg, UINT msg, WPARAM wpa ...@@ -184,7 +184,15 @@ static INT_PTR CALLBACK modify_string_dlgproc(HWND hwndDlg, UINT msg, WPARAM wpa
return FALSE; return FALSE;
} }
static void change_dword_base(HWND hwndDlg, BOOL toHex) static void set_dword_edit_limit(HWND hwndDlg, DWORD type)
{
if (isDecimal)
SendDlgItemMessageW(hwndDlg, IDC_VALUE_DATA, EM_SETLIMITTEXT, type == REG_DWORD ? 10 : 20, 0);
else
SendDlgItemMessageW(hwndDlg, IDC_VALUE_DATA, EM_SETLIMITTEXT, type == REG_DWORD ? 8 : 16, 0);
}
static void change_dword_base(HWND hwndDlg, BOOL toHex, DWORD type)
{ {
WCHAR buf[64]; WCHAR buf[64];
unsigned int len; unsigned int len;
...@@ -204,11 +212,13 @@ static void change_dword_base(HWND hwndDlg, BOOL toHex) ...@@ -204,11 +212,13 @@ static void change_dword_base(HWND hwndDlg, BOOL toHex)
} }
isDecimal = !toHex; isDecimal = !toHex;
set_dword_edit_limit(hwndDlg, type);
} }
static INT_PTR CALLBACK modify_dword_dlgproc(HWND hwndDlg, UINT msg, WPARAM wparam, LPARAM lparam) static INT_PTR CALLBACK modify_dword_dlgproc(HWND hwndDlg, UINT msg, WPARAM wparam, LPARAM lparam)
{ {
struct edit_params *params; static struct edit_params *params;
WCHAR buf[64]; WCHAR buf[64];
int ret = 0; int ret = 0;
...@@ -223,15 +233,16 @@ static INT_PTR CALLBACK modify_dword_dlgproc(HWND hwndDlg, UINT msg, WPARAM wpar ...@@ -223,15 +233,16 @@ static INT_PTR CALLBACK modify_dword_dlgproc(HWND hwndDlg, UINT msg, WPARAM wpar
isDecimal = FALSE; isDecimal = FALSE;
if (params->type == REG_QWORD && LoadStringW(GetModuleHandleW(0), IDS_EDIT_QWORD, buf, ARRAY_SIZE(buf))) if (params->type == REG_QWORD && LoadStringW(GetModuleHandleW(0), IDS_EDIT_QWORD, buf, ARRAY_SIZE(buf)))
SetWindowTextW(hwndDlg, buf); SetWindowTextW(hwndDlg, buf);
set_dword_edit_limit(hwndDlg, params->type);
return TRUE; return TRUE;
case WM_COMMAND: case WM_COMMAND:
switch (LOWORD(wparam)) switch (LOWORD(wparam))
{ {
case IDC_DWORD_HEX: case IDC_DWORD_HEX:
change_dword_base(hwndDlg, TRUE); change_dword_base(hwndDlg, TRUE, params->type);
break; break;
case IDC_DWORD_DEC: case IDC_DWORD_DEC:
change_dword_base(hwndDlg, FALSE); change_dword_base(hwndDlg, FALSE, params->type);
break; break;
case IDOK: case IDOK:
params = (struct edit_params *)GetWindowLongPtrW(hwndDlg, DWLP_USER); params = (struct edit_params *)GetWindowLongPtrW(hwndDlg, DWLP_USER);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment