From: Alex Henrie alexhenrie24@gmail.com
--- dlls/ntdll/reg.c | 2 +- dlls/ntdll/tests/reg.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/dlls/ntdll/reg.c b/dlls/ntdll/reg.c index d4bf530537a..265ea34d962 100644 --- a/dlls/ntdll/reg.c +++ b/dlls/ntdll/reg.c @@ -259,7 +259,7 @@ static NTSTATUS RTL_ReportRegistryValue(PKEY_VALUE_FULL_INFORMATION pInfo, { ULONG default_size = pQuery->DefaultLength; if (!default_size && pQuery->DefaultType == REG_SZ && pQuery->DefaultData) - default_size = wcslen(pQuery->DefaultData) + 1; + default_size = (wcslen(pQuery->DefaultData) + 1) * sizeof(WCHAR); if (str->MaximumLength < default_size) return STATUS_BUFFER_TOO_SMALL; memcpy(str->Buffer, pQuery->DefaultData, default_size); diff --git a/dlls/ntdll/tests/reg.c b/dlls/ntdll/tests/reg.c index fe36ce41a29..afbf921469b 100644 --- a/dlls/ntdll/tests/reg.c +++ b/dlls/ntdll/tests/reg.c @@ -2734,7 +2734,7 @@ static struct query_reg_values_test query_reg_values_tests[] = { {{ NULL, RTL_QUERY_REGISTRY_DIRECT, (WCHAR*)L"I don't exist", &query_reg_values_direct_str, REG_SZ, (WCHAR*)L"%SYSTEMDRIVE%" }}, - STATUS_SUCCESS, 0, EXPECT_DEFAULT_DATA | WINE_TODO_DATA + STATUS_SUCCESS, 0, EXPECT_DEFAULT_DATA }, { {{ NULL, RTL_QUERY_REGISTRY_DIRECT, (WCHAR*)L"I don't exist",
From: Alex Henrie alexhenrie24@gmail.com
--- dlls/ntdll/reg.c | 9 +++++---- dlls/ntdll/tests/reg.c | 4 ++-- 2 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/dlls/ntdll/reg.c b/dlls/ntdll/reg.c index 265ea34d962..9be75649cc3 100644 --- a/dlls/ntdll/reg.c +++ b/dlls/ntdll/reg.c @@ -255,11 +255,12 @@ static NTSTATUS RTL_ReportRegistryValue(PKEY_VALUE_FULL_INFORMATION pInfo,
if (pInfo == NULL) { + ULONG default_size = pQuery->DefaultLength; + if (!default_size && pQuery->DefaultType == REG_SZ && pQuery->DefaultData) + default_size = (wcslen(pQuery->DefaultData) + 1) * sizeof(WCHAR); + if (pQuery->Flags & RTL_QUERY_REGISTRY_DIRECT) { - ULONG default_size = pQuery->DefaultLength; - if (!default_size && pQuery->DefaultType == REG_SZ && pQuery->DefaultData) - default_size = (wcslen(pQuery->DefaultData) + 1) * sizeof(WCHAR); if (str->MaximumLength < default_size) return STATUS_BUFFER_TOO_SMALL; memcpy(str->Buffer, pQuery->DefaultData, default_size); @@ -268,7 +269,7 @@ static NTSTATUS RTL_ReportRegistryValue(PKEY_VALUE_FULL_INFORMATION pInfo, else if (pQuery->QueryRoutine) { status = pQuery->QueryRoutine(pQuery->Name, pQuery->DefaultType, pQuery->DefaultData, - pQuery->DefaultLength, pContext, pQuery->EntryContext); + default_size, pContext, pQuery->EntryContext); } return status; } diff --git a/dlls/ntdll/tests/reg.c b/dlls/ntdll/tests/reg.c index afbf921469b..9449cd2f904 100644 --- a/dlls/ntdll/tests/reg.c +++ b/dlls/ntdll/tests/reg.c @@ -2716,7 +2716,7 @@ static struct query_reg_values_test query_reg_values_tests[] = }, { {{ query_routine, 0, (WCHAR*)L"I don't exist", NULL, REG_SZ, (WCHAR*)L"%SYSTEMDRIVE%" }}, - STATUS_SUCCESS, 1, EXPECT_DEFAULT_DATA | WINE_TODO_SIZE + STATUS_SUCCESS, 1, EXPECT_DEFAULT_DATA }, { {{ query_routine, 0, (WCHAR*)L"I don't exist", NULL, REG_EXPAND_SZ, (WCHAR*)L"%SYSTEMDRIVE%" }}, @@ -2784,7 +2784,7 @@ static struct query_reg_values_test query_reg_values_tests[] = }, { {{ query_routine, 0, (WCHAR*)L"I don't exist", NULL, REG_SZ, (WCHAR*)L"Some default" }}, - STATUS_SUCCESS, 1, EXPECT_DEFAULT_DATA | WINE_TODO_SIZE + STATUS_SUCCESS, 1, EXPECT_DEFAULT_DATA }, };