Cygwin: don't return valid acl entry type for unknown SID

cygpsid::get_id neglects to set the type to 0 (ACL_UNDEFINED_TAG
in POSIX speak) if the SID can not be translated into a valid
uid or gid.  This in turn leads to incorrect handling of uid/gid -1
entries.

Fix this by setting type to 0 if the id is unknown.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
Corinna Vinschen 2018-08-27 13:30:55 +02:00
parent 6706b19a97
commit fcfcc288c4
1 changed files with 9 additions and 3 deletions

View File

@ -169,10 +169,16 @@ cygpsid::get_id (BOOL search_grp, int *type, cyg_ldap *pldap)
} }
else if ((pw = internal_getpwsid (*this, pldap))) else if ((pw = internal_getpwsid (*this, pldap)))
id = pw->pw_uid; id = pw->pw_uid;
if (id != ILLEGAL_UID && type) if (id != ILLEGAL_UID)
*type = USER; {
if (type)
*type = USER;
return id;
}
} }
return id; if (type)
*type = 0; /* undefined type */
return ILLEGAL_UID;
} }
PWCHAR PWCHAR