In ObOpenObjectByPointer, always pass right mapping to SeCreateAccessState, instead of relying on a optional/incorrect parameter

svn path=/trunk/; revision=22728
This commit is contained in:
Hervé Poussineau 2006-06-30 21:34:53 +00:00
parent d3ccc7eb41
commit f8b990739a

View file

@ -1612,11 +1612,15 @@ ObOpenObjectByPointer(IN PVOID Object,
IN KPROCESSOR_MODE AccessMode, IN KPROCESSOR_MODE AccessMode,
OUT PHANDLE Handle) OUT PHANDLE Handle)
{ {
POBJECT_HEADER Header;
NTSTATUS Status; NTSTATUS Status;
ACCESS_STATE AccessState; ACCESS_STATE AccessState;
AUX_DATA AuxData; AUX_DATA AuxData;
PAGED_CODE(); PAGED_CODE();
/* Get the Header Info */
Header = OBJECT_TO_OBJECT_HEADER(Object);
/* Reference the object */ /* Reference the object */
Status = ObReferenceObjectByPointer(Object, Status = ObReferenceObjectByPointer(Object,
0, 0,
@ -1632,7 +1636,7 @@ ObOpenObjectByPointer(IN PVOID Object,
Status = SeCreateAccessState(&AccessState, Status = SeCreateAccessState(&AccessState,
&AuxData, &AuxData,
DesiredAccess, DesiredAccess,
&ObjectType->TypeInfo.GenericMapping); &Header->Type->TypeInfo.GenericMapping);
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
{ {
/* Fail */ /* Fail */