mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 01:24:38 +00:00
Patch to fix NtCreateSempahore, in the case where the initial lookup
succeeds. We previously left the function without initializing hSemaphore. Patch suggested by me and executed by hpoussin. svn path=/trunk/; revision=13483
This commit is contained in:
parent
231989d7ac
commit
73f1d215e0
1 changed files with 22 additions and 13 deletions
|
@ -128,28 +128,37 @@ NtCreateSemaphore(OUT PHANDLE SemaphoreHandle,
|
|||
KeInitializeSemaphore(Semaphore,
|
||||
InitialCount,
|
||||
MaximumCount);
|
||||
}
|
||||
|
||||
Status = ObInsertObject ((PVOID)Semaphore,
|
||||
Status = ObInsertObject ((PVOID)Semaphore,
|
||||
NULL,
|
||||
DesiredAccess,
|
||||
0,
|
||||
NULL,
|
||||
&hSemaphore);
|
||||
|
||||
ObDereferenceObject(Semaphore);
|
||||
|
||||
if(NT_SUCCESS(Status))
|
||||
if(NT_SUCCESS(Status))
|
||||
{
|
||||
_SEH_TRY
|
||||
{
|
||||
_SEH_TRY
|
||||
{
|
||||
*SemaphoreHandle = hSemaphore;
|
||||
}
|
||||
_SEH_HANDLE
|
||||
{
|
||||
Status = _SEH_GetExceptionCode();
|
||||
}
|
||||
_SEH_END;
|
||||
ObDereferenceObject(Semaphore);
|
||||
*SemaphoreHandle = hSemaphore;
|
||||
}
|
||||
_SEH_HANDLE
|
||||
{
|
||||
Status = _SEH_GetExceptionCode();
|
||||
}
|
||||
_SEH_END;
|
||||
} else {
|
||||
_SEH_TRY
|
||||
{
|
||||
*SemaphoreHandle = INVALID_HANDLE_VALUE;
|
||||
}
|
||||
_SEH_HANDLE
|
||||
{
|
||||
Status = _SEH_GetExceptionCode();
|
||||
}
|
||||
_SEH_END;
|
||||
}
|
||||
|
||||
return Status;
|
||||
|
|
Loading…
Reference in a new issue