[KERNEL32] Fix reading SafeDllSearchMode

This commit is contained in:
Mark Jansen 2022-04-08 00:22:54 +02:00
parent 8b55d712a7
commit 8ea46b53e3
No known key found for this signature in database
GPG key ID: B39240EE84BEAE8B

View file

@ -424,7 +424,7 @@ BaseComputeProcessDllPath(IN LPWSTR FullPath,
UNICODE_STRING KeyName = RTL_CONSTANT_STRING(L"\\Registry\\MACHINE\\System\\CurrentControlSet\\Control\\Session Manager");
UNICODE_STRING ValueName = RTL_CONSTANT_STRING(L"SafeDllSearchMode");
OBJECT_ATTRIBUTES ObjectAttributes = RTL_CONSTANT_OBJECT_ATTRIBUTES(&KeyName, OBJ_CASE_INSENSITIVE);
KEY_VALUE_PARTIAL_INFORMATION PartialInfo;
CHAR PartialInfoBuffer[FIELD_OFFSET(KEY_VALUE_PARTIAL_INFORMATION, Data) + sizeof(ULONG)];
HANDLE KeyHandle;
NTSTATUS Status;
ULONG ResultLength;
@ -461,15 +461,16 @@ BaseComputeProcessDllPath(IN LPWSTR FullPath,
Status = NtQueryValueKey(KeyHandle,
&ValueName,
KeyValuePartialInformation,
&PartialInfo,
sizeof(PartialInfo),
PartialInfoBuffer,
sizeof(PartialInfoBuffer),
&ResultLength);
if (NT_SUCCESS(Status))
{
/* Read the value if the size is OK */
if (ResultLength == sizeof(PartialInfo))
if (ResultLength == sizeof(PartialInfoBuffer))
{
CurrentDirPlacement = *(PULONG)PartialInfo.Data;
PKEY_VALUE_PARTIAL_INFORMATION PartialInfo = (PKEY_VALUE_PARTIAL_INFORMATION)PartialInfoBuffer;
CurrentDirPlacement = *(PULONG)PartialInfo->Data;
}
}