1
0
mirror of https://github.com/wine-mirror/wine synced 2024-07-08 20:06:18 +00:00

ntdll: Don't accept a query routine when using RTL_QUERY_REGISTRY_DIRECT.

This commit is contained in:
Alex Henrie 2024-06-13 22:48:48 -06:00 committed by Alexandre Julliard
parent f0707f1757
commit 54991feaae
2 changed files with 11 additions and 1 deletions

View File

@ -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:

View File

@ -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 }},