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

ntdll: Replace the whole string when using RTL_QUERY_REGISTRY_DIRECT.

This commit is contained in:
Alex Henrie 2024-06-13 22:48:49 -06:00 committed by Alexandre Julliard
parent 4db02f7619
commit 54c3f96214
2 changed files with 11 additions and 1 deletions

View File

@ -311,7 +311,12 @@ static NTSTATUS RTL_ReportRegistryValue(PKEY_VALUE_FULL_INFORMATION pInfo,
if (str->Buffer == NULL)
RtlCreateUnicodeString(str, (WCHAR*)(((CHAR*)pInfo) + pInfo->DataOffset));
else
RtlAppendUnicodeToString(str, (WCHAR*)(((CHAR*)pInfo) + pInfo->DataOffset));
{
if (str->MaximumLength < len)
return STATUS_BUFFER_TOO_SMALL;
memcpy(str->Buffer, (char*)pInfo + pInfo->DataOffset, len);
str->Length = len - sizeof(WCHAR);
}
break;
case REG_MULTI_SZ:

View File

@ -2673,6 +2673,11 @@ static struct query_reg_values_test query_reg_values_tests[] =
{{ NULL, RTL_QUERY_REGISTRY_DIRECT, (WCHAR*)L"WindowsDrive", &query_reg_values_direct_str }},
STATUS_SUCCESS, 0, 0, REG_SZ, L"C:"
},
{
{{ NULL, RTL_QUERY_REGISTRY_DIRECT | RTL_QUERY_REGISTRY_NOEXPAND, (WCHAR*)L"WindowsDrive",
&query_reg_values_direct_str }},
STATUS_SUCCESS, 0, 0, REG_SZ, L"%SYSTEMDRIVE%"
},
/* DIRECT on a multi-string crashes on Windows without NOEXPAND */
/* {
{{ NULL, RTL_QUERY_REGISTRY_DIRECT, (WCHAR*)L"CapitalsOfEurope", &query_reg_values_direct_str }},