it's valid to pass lpTargetHandle = NULL to DuplicateHandle() Modified: trunk/reactos/ntoskrnl/ob/handle.c _____
Modified: trunk/reactos/ntoskrnl/ob/handle.c --- trunk/reactos/ntoskrnl/ob/handle.c 2005-05-04 20:38:43 UTC (rev 14977) +++ trunk/reactos/ntoskrnl/ob/handle.c 2005-05-04 21:23:13 UTC (rev 14978) @@ -347,7 +347,7 @@
NtDuplicateObject (IN HANDLE SourceProcessHandle, IN HANDLE SourceHandle, IN HANDLE TargetProcessHandle, - OUT PHANDLE TargetHandle, + OUT PHANDLE TargetHandle OPTIONAL, IN ACCESS_MASK DesiredAccess, IN BOOLEAN InheritHandle, ULONG Options) @@ -386,7 +386,7 @@
PreviousMode = ExGetPreviousMode();
- if(PreviousMode != KernelMode) + if(TargetHandle != NULL && PreviousMode != KernelMode) { _SEH_TRY { @@ -488,7 +488,7 @@ ObDereferenceObject(TargetProcess); ObDereferenceObject(SourceProcess);
- if(NT_SUCCESS(Status)) + if(NT_SUCCESS(Status) && TargetHandle != NULL) { _SEH_TRY {