From: Eric Kohl Date: Mon, 19 Jul 2004 12:48:59 +0000 (+0000) Subject: - Add @implemented tag to NtMakePermanentObject(). X-Git-Tag: ReactOS-0.2.4~453 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=de32ec78dc88b5abb832e97cddfc03c3b600ac0e - Add @implemented tag to NtMakePermanentObject(). - Capture the security context before calling SeAsignSecurity() and release it later. svn path=/trunk/; revision=10227 --- diff --git a/reactos/ntoskrnl/ob/ntobj.c b/reactos/ntoskrnl/ob/ntobj.c index 3a8f3355e8f..cd15dd056a8 100644 --- a/reactos/ntoskrnl/ob/ntobj.c +++ b/reactos/ntoskrnl/ob/ntobj.c @@ -1,4 +1,4 @@ -/* $Id: ntobj.c,v 1.21 2004/07/17 12:08:21 ekohl Exp $ +/* $Id: ntobj.c,v 1.22 2004/07/19 12:48:59 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -283,6 +283,8 @@ NtMakeTemporaryObject(IN HANDLE Handle) * RETURN VALUE * * REVISIONS + * + * @implemented */ NTSTATUS STDCALL NtMakePermanentObject(IN HANDLE Handle) diff --git a/reactos/ntoskrnl/ob/object.c b/reactos/ntoskrnl/ob/object.c index e3aa0622b67..1e1ff028b72 100644 --- a/reactos/ntoskrnl/ob/object.c +++ b/reactos/ntoskrnl/ob/object.c @@ -1,4 +1,4 @@ -/* $Id: object.c,v 1.79 2004/07/18 13:03:43 ekohl Exp $ +/* $Id: object.c,v 1.80 2004/07/19 12:48:59 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -348,6 +348,7 @@ ObCreateObject (IN KPROCESSOR_MODE ObjectAttributesAccessMode OPTIONAL, BOOLEAN ObjectAttached = FALSE; PWCHAR NamePtr; PSECURITY_DESCRIPTOR NewSecurityDescriptor = NULL; + SECURITY_SUBJECT_CONTEXT SubjectContext; assert_irql(APC_LEVEL); @@ -457,12 +458,14 @@ ObCreateObject (IN KPROCESSOR_MODE ObjectAttributesAccessMode OPTIONAL, } RtlFreeUnicodeString(&RemainingPath); + SeCaptureSubjectContext(&SubjectContext); + /* Build the new security descriptor */ Status = SeAssignSecurity((ParentHeader != NULL) ? ParentHeader->SecurityDescriptor : NULL, (ObjectAttributes != NULL) ? ObjectAttributes->SecurityDescriptor : NULL, &NewSecurityDescriptor, (Header->ObjectType == ObDirectoryType), - NULL, //SubjectContext, + &SubjectContext, Header->ObjectType->Mapping, PagedPool); if (NT_SUCCESS(Status)) @@ -486,6 +489,8 @@ ObCreateObject (IN KPROCESSOR_MODE ObjectAttributesAccessMode OPTIONAL, SeDeassignSecurity(&NewSecurityDescriptor); } + SeReleaseSubjectContext(&SubjectContext); + if (Object != NULL) { *Object = HEADER_TO_BODY(Header);