diff --git a/reactos/ntoskrnl/include/internal/se.h b/reactos/ntoskrnl/include/internal/se.h index abcc20d87dd..05b22f55999 100644 --- a/reactos/ntoskrnl/include/internal/se.h +++ b/reactos/ntoskrnl/include/internal/se.h @@ -101,6 +101,8 @@ BOOLEAN SepInitSecurityIDs(VOID); BOOLEAN SepInitDACLs(VOID); BOOLEAN SepInitSDs(VOID); +VOID SepInitializeTokenImplementation(VOID); + NTSTATUS SeExchangePrimaryToken(struct _EPROCESS* Process, PACCESS_TOKEN NewToken, diff --git a/reactos/ntoskrnl/se/semgr.c b/reactos/ntoskrnl/se/semgr.c index 0bc0861a521..87a82a5528b 100644 --- a/reactos/ntoskrnl/se/semgr.c +++ b/reactos/ntoskrnl/se/semgr.c @@ -1,4 +1,4 @@ -/* $Id: semgr.c,v 1.18 2002/02/20 20:15:38 ekohl Exp $ +/* $Id: semgr.c,v 1.19 2002/06/04 13:44:06 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -58,7 +58,9 @@ SeInit1(VOID) BOOLEAN SeInit2(VOID) { - return TRUE; + SeInitializeTokenImplementation(); + + return(TRUE); } diff --git a/reactos/ntoskrnl/se/token.c b/reactos/ntoskrnl/se/token.c index 97d0a1d2eb5..6a64073839a 100644 --- a/reactos/ntoskrnl/se/token.c +++ b/reactos/ntoskrnl/se/token.c @@ -1,4 +1,4 @@ -/* $Id: token.c,v 1.14 2002/02/22 13:36:24 ekohl Exp $ +/* $Id: token.c,v 1.15 2002/06/04 13:44:06 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -216,10 +216,10 @@ SeImpersonateClient(IN PSECURITY_CLIENT_CONTEXT ClientContext, VOID -SeInitializeTokenManager(VOID) +SepInitializeTokenImplementation(VOID) { SepTokenObjectType = ExAllocatePool(NonPagedPool, sizeof(OBJECT_TYPE)); - + SepTokenObjectType->Tag = TAG('T', 'O', 'K', 'T'); SepTokenObjectType->MaxObjects = ULONG_MAX; SepTokenObjectType->MaxHandles = ULONG_MAX; @@ -238,10 +238,12 @@ SeInitializeTokenManager(VOID) SepTokenObjectType->OkayToClose = NULL; SepTokenObjectType->Create = NULL; SepTokenObjectType->DuplicationNotify = NULL; + RtlCreateUnicodeString(&SepTokenObjectType->TypeName, L"Token"); } + NTSTATUS RtlCopySidAndAttributesArray(ULONG Count, // ebp + 8 PSID_AND_ATTRIBUTES Src, // ebp + C @@ -606,25 +608,29 @@ NtCreateToken(OUT PHANDLE TokenHandle, IN PTOKEN_DEFAULT_DACL TokenDefaultDacl, IN PTOKEN_SOURCE TokenSource) { + PACCESS_TOKEN AccessToken; + NTSTATUS Status; + + Status = ObCreateObject(TokenHandle, + DesiredAccess, + ObjectAttributes, + SepTokenObjectType, + (PVOID*)&AccessToken); + if (!NT_SUCCESS(Status)) + { + DPRINT1("ObCreateObject() failed (Status %lx)\n"); + return(Status); + } + #if 0 - PACCESS_TOKEN AccessToken; - NTSTATUS Status; - - Status = ObCreateObject(TokenHandle, - DesiredAccess, - ObjectAttributes, - SeTokenType); - if (!NT_SUCCESS(Status)) - { - return(Status); - } - AccessToken->TokenType = TokenType; RtlCopyLuid(&AccessToken->AuthenticationId, AuthenticationId); AccessToken->ExpirationTime = *ExpirationTime; AccessToken-> #endif - UNIMPLEMENTED; +// UNIMPLEMENTED; + + return(STATUS_SUCCESS); }