Cygwin: ACLs: don't set indicator for default ACEs prematurely

Commit a2bfe7cae6 introduced a change ignoring default ACEs on files
to come up with a valid POSIX ACL, reflecting the Windows ACEs actually
making sense on files.

However, if CREATOR OWNER or CREATOR GROUP ACEs - both only making sense
as default ACEs - are found in the ACL, a value indicating the presence
of default ACEs gets set, even on files.  This in turn breaks a
subsequent integrity check and get_posix_access returns EINVAL.

The code path handling default ACEs on directories sets this indicator
anyway, so don't set it just because one of the above SIDs are found.

Fixes: a2bfe7cae6 ("Cygwin: ACLs: ignore *_INHERIT flags in file ACLs")
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
Corinna Vinschen 2022-01-25 19:53:40 +01:00
parent 5dc4e2089a
commit f467a1da58
1 changed files with 0 additions and 2 deletions

View File

@ -850,14 +850,12 @@ get_posix_access (PSECURITY_DESCRIPTOR psd,
else if (ace_sid == well_known_creator_owner_sid) else if (ace_sid == well_known_creator_owner_sid)
{ {
type = DEF_USER_OBJ; type = DEF_USER_OBJ;
types_def |= type;
id = ACL_UNDEFINED_ID; id = ACL_UNDEFINED_ID;
saw_def_user_obj = true; saw_def_user_obj = true;
} }
else if (ace_sid == well_known_creator_group_sid) else if (ace_sid == well_known_creator_group_sid)
{ {
type = DEF_GROUP_OBJ; type = DEF_GROUP_OBJ;
types_def |= type;
id = ACL_UNDEFINED_ID; id = ACL_UNDEFINED_ID;
saw_def_group_obj = true; saw_def_group_obj = true;
} }