Mask values that control inheritability of the handle, and don't affect access.

svn path=/trunk/; revision=28973
This commit is contained in:
Art Yerkes 2007-09-09 12:21:22 +00:00
parent 1f2057ff37
commit 4c33a58449

View file

@ -1035,7 +1035,8 @@ SeAccessCheck(IN PSECURITY_DESCRIPTOR SecurityDescriptor,
AccessMode))
{
CurrentAccess |= WRITE_OWNER;
if (DesiredAccess == CurrentAccess)
if ((DesiredAccess & ~VALID_INHERIT_FLAGS) ==
(CurrentAccess & ~VALID_INHERIT_FLAGS))
{
if (SubjectContextLocked == FALSE)
{
@ -1067,7 +1068,8 @@ SeAccessCheck(IN PSECURITY_DESCRIPTOR SecurityDescriptor,
if (Sid && SepSidInToken(Token, Sid))
{
CurrentAccess |= (READ_CONTROL | WRITE_DAC);
if (DesiredAccess == CurrentAccess)
if ((DesiredAccess & ~VALID_INHERIT_FLAGS) ==
(CurrentAccess & ~VALID_INHERIT_FLAGS))
{
if (SubjectContextLocked == FALSE)
{
@ -1145,7 +1147,8 @@ SeAccessCheck(IN PSECURITY_DESCRIPTOR SecurityDescriptor,
*AccessStatus = STATUS_SUCCESS;
return TRUE;
}
else if (*GrantedAccess == DesiredAccess)
else if ((*GrantedAccess & ~VALID_INHERIT_FLAGS) ==
(DesiredAccess & ~VALID_INHERIT_FLAGS))
{
*AccessStatus = STATUS_SUCCESS;
return TRUE;