mirror of
https://github.com/reactos/reactos.git
synced 2024-10-06 17:35:07 +00:00
- Partly enable tamlin's implementation, just so it doesn't bitrot being #if0-ed.
svn path=/trunk/; revision=30249
This commit is contained in:
parent
692eaf0a33
commit
6f00345570
|
@ -319,21 +319,16 @@ static NTSTATUS
|
|||
CreateLogoffSecurityAttributes(
|
||||
OUT PSECURITY_ATTRIBUTES* ppsa)
|
||||
{
|
||||
#if 1
|
||||
ERR("CreateLogoffSecurityAttributes needs implementation!\n");
|
||||
*ppsa = 0;
|
||||
return STATUS_UNSUCCESSFUL;
|
||||
#else
|
||||
/* The following code is no only incomplete, it's a mess and uncompilable */
|
||||
/* Still, it gives some ideas about data types and functions involved and */
|
||||
/* required to set up a SECURITY_DESCRIPTOR for a SECURITY_ATTRIBUTES */
|
||||
/* instance for a thread, to allow that thread to ImpersonateLoggedOnUser(). */
|
||||
/* Specifically THREAD_SET_THREAD_TOKEN is required. */
|
||||
PSECURITY_DESCRIPTOR psd = 0;
|
||||
PSECURITY_DESCRIPTOR SecurityDescriptor = NULL;
|
||||
PSECURITY_ATTRIBUTES psa = 0;
|
||||
BYTE* pMem;
|
||||
PACL pACL;
|
||||
EXPLICIT_ACCESS ea[2];
|
||||
//EXPLICIT_ACCESS ea[2];
|
||||
|
||||
*ppsa = NULL;
|
||||
|
||||
|
@ -374,10 +369,10 @@ CreateLogoffSecurityAttributes(
|
|||
/* meaning its members must be pointers to other structures, rather */
|
||||
/* than the relative format using offsets */
|
||||
psa = (PSECURITY_ATTRIBUTES)pMem;
|
||||
psd = (PSECURITY_DESCRIPTOR)(pMem + sizeof(SECURITY_ATTRIBUTES));
|
||||
pACL = (PACL)(((PBYTE)psd) + SECURITY_DESCRIPTOR_MIN_LENGTH);
|
||||
SecurityDescriptor = (PSECURITY_DESCRIPTOR)(pMem + sizeof(SECURITY_ATTRIBUTES));
|
||||
pACL = (PACL)(((PBYTE)SecurityDescriptor) + SECURITY_DESCRIPTOR_MIN_LENGTH);
|
||||
|
||||
if (!InitializeSecurityDescriptor(psd, SECURITY_DESCRIPTOR_REVISION))
|
||||
if (!InitializeSecurityDescriptor(SecurityDescriptor, SECURITY_DESCRIPTOR_REVISION))
|
||||
{
|
||||
HeapFree(GetProcessHeap(), 0, pMem);
|
||||
DPRINT("Failed to initialize security descriptor for logoff thread!\n");
|
||||
|
@ -386,6 +381,7 @@ CreateLogoffSecurityAttributes(
|
|||
|
||||
// Initialize an EXPLICIT_ACCESS structure for an ACE.
|
||||
// The ACE will allow this thread to log off (and shut down the system, currently).
|
||||
#if 0
|
||||
ZeroMemory(ea, sizeof(ea));
|
||||
ea[0].grfAccessPermissions = THREAD_SET_THREAD_TOKEN;
|
||||
ea[0].grfAccessMode = SET_ACCESS; // GRANT_ACCESS?
|
||||
|
@ -403,15 +399,15 @@ CreateLogoffSecurityAttributes(
|
|||
HeapFree(GetProcessHeap(), 0, pMem);
|
||||
return STATUS_UNSUCCESSFUL;
|
||||
}
|
||||
#endif
|
||||
|
||||
psa->nLength = sizeof(sa);
|
||||
psa->lpSecurityDescriptor = psd;
|
||||
psa->nLength = sizeof(SECURITY_ATTRIBUTES);
|
||||
psa->lpSecurityDescriptor = SecurityDescriptor;
|
||||
psa->bInheritHandle = FALSE;
|
||||
|
||||
*ppsa = psa;
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
#endif
|
||||
}
|
||||
|
||||
static VOID
|
||||
|
|
Loading…
Reference in a new issue