20 Feb
2016
20 Feb
'16
4:54 a.m.
Hugh McMaster <hugh.mcmaster(a)outlook.com> writes:
@@ -243,8 +243,17 @@ static LPBYTE get_regdata(LPWSTR data, DWORD reg_type, WCHAR separator, DWORD *r { LPWSTR rest; DWORD val; + BOOL overflow = FALSE; + if (data[1] == 'x') + { + WCHAR *ptr = &data[2]; + while (*ptr == '0') + ptr++; + if (strlenW(ptr) > 8) + overflow = TRUE; + } val = strtoulW(data, &rest, (data[1] == 'x') ? 16 : 10);
You won't be able to catch base 10 overflows this way. It probably needs a more general solution (and some more test cases...) -- Alexandre Julliard julliard(a)winehq.org