Don't always return STATUS_BUFFER_TOO_SMALL when an error occurs in ZwQueryValueKey. The "if" was triggered because ValueInformation->DataLength is 0xcdcdcdcd at the return of the function Modified: trunk/reactos/ntoskrnl/io/pnpmgr.c _____
Modified: trunk/reactos/ntoskrnl/io/pnpmgr.c --- trunk/reactos/ntoskrnl/io/pnpmgr.c 2005-10-14 13:00:18 UTC (rev 18441) +++ trunk/reactos/ntoskrnl/io/pnpmgr.c 2005-10-14 13:04:11 UTC (rev 18442) @@ -322,15 +322,18 @@
*ResultLength = ValueInformation->DataLength; ZwClose(KeyHandle);
- if (ValueInformation->DataLength > BufferLength) - Status = STATUS_BUFFER_TOO_SMALL; - if (!NT_SUCCESS(Status)) { ExFreePool(ValueInformation); return Status; }
+ if (ValueInformation->DataLength > BufferLength) + { + ExFreePool(ValueInformation); + return STATUS_BUFFER_TOO_SMALL; + } + /* FIXME: Verify the value (NULL-terminated, correct format). */
RtlCopyMemory(PropertyBuffer, ValueInformation->Data,