mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-06 17:54:05 +00:00
ntdll: Don't accept a query routine when using RTL_QUERY_REGISTRY_DIRECT.
This commit is contained in:
parent
f0707f1757
commit
54991feaae
|
@ -261,6 +261,8 @@ static NTSTATUS RTL_ReportRegistryValue(PKEY_VALUE_FULL_INFORMATION pInfo,
|
|||
|
||||
if (pQuery->Flags & RTL_QUERY_REGISTRY_DIRECT)
|
||||
{
|
||||
if (pQuery->QueryRoutine)
|
||||
return STATUS_INVALID_PARAMETER;
|
||||
if (str->MaximumLength < default_size)
|
||||
return STATUS_BUFFER_TOO_SMALL;
|
||||
memcpy(str->Buffer, pQuery->DefaultData, default_size);
|
||||
|
@ -277,6 +279,9 @@ static NTSTATUS RTL_ReportRegistryValue(PKEY_VALUE_FULL_INFORMATION pInfo,
|
|||
|
||||
if (pQuery->Flags & RTL_QUERY_REGISTRY_DIRECT)
|
||||
{
|
||||
if (pQuery->QueryRoutine)
|
||||
return STATUS_INVALID_PARAMETER;
|
||||
|
||||
switch(pInfo->Type)
|
||||
{
|
||||
case REG_EXPAND_SZ:
|
||||
|
|
|
@ -2662,7 +2662,12 @@ static struct query_reg_values_test query_reg_values_tests[] =
|
|||
/* DIRECT doesn't call the query routine and reads directly into a buffer */
|
||||
{
|
||||
{{ query_routine, RTL_QUERY_REGISTRY_DIRECT, (WCHAR*)L"WindowsDrive", &query_reg_values_direct_str }},
|
||||
STATUS_INVALID_PARAMETER, 0, WINE_TODO_RET | WINE_TODO_NAME | WINE_TODO_TYPE | WINE_TODO_SIZE | WINE_TODO_DATA
|
||||
STATUS_INVALID_PARAMETER, 0
|
||||
},
|
||||
{
|
||||
{{ query_routine, RTL_QUERY_REGISTRY_DIRECT, (WCHAR*)L"I don't exist",
|
||||
&query_reg_values_direct_str, REG_SZ, (WCHAR*)L"Some default" }},
|
||||
STATUS_INVALID_PARAMETER, 0
|
||||
},
|
||||
{
|
||||
{{ NULL, RTL_QUERY_REGISTRY_DIRECT, (WCHAR*)L"WindowsDrive", &query_reg_values_direct_str }},
|
||||
|
|
Loading…
Reference in a new issue