* sec_acl.cc (getacl): Add mask even if all group and secondary account
permissions are 0.
This commit is contained in:
parent
211cb4df18
commit
83b0e8cffe
@ -1,3 +1,8 @@
|
||||
2015-02-27 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* sec_acl.cc (getacl): Add mask even if all group and secondary account
|
||||
permissions are 0.
|
||||
|
||||
2015-02-27 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* uinfo.cc (pwdgrp::fetch_account_from_windows): Drop redundant test
|
||||
|
@ -423,6 +423,7 @@ getacl (HANDLE handle, path_conv &pc, int nentries, aclent_t *aclbufp)
|
||||
|
||||
int pos, i, types_def = 0;
|
||||
int pgrp_pos = 1, def_pgrp_pos = -1;
|
||||
bool has_class_perm = false, has_def_class_perm = false;
|
||||
mode_t class_perm = 0, def_class_perm = 0;
|
||||
|
||||
if (!acl_exists || !acl)
|
||||
@ -485,9 +486,12 @@ getacl (HANDLE handle, path_conv &pc, int nentries, aclent_t *aclbufp)
|
||||
getace (lacl[pos], type, id, ace->Mask, ace->Header.AceType);
|
||||
/* Fix up CLASS_OBJ value. */
|
||||
if (type == USER || type == GROUP)
|
||||
{
|
||||
has_class_perm = true;
|
||||
class_perm |= lacl[pos].a_perm;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ((ace->Header.AceFlags
|
||||
& (CONTAINER_INHERIT_ACE | OBJECT_INHERIT_ACE))
|
||||
&& pc.isdir ())
|
||||
@ -503,7 +507,10 @@ getacl (HANDLE handle, path_conv &pc, int nentries, aclent_t *aclbufp)
|
||||
getace (lacl[pos], type, id, ace->Mask, ace->Header.AceType);
|
||||
/* Fix up DEF_CLASS_OBJ value. */
|
||||
if (type == DEF_USER || type == DEF_GROUP)
|
||||
{
|
||||
has_def_class_perm = true;
|
||||
def_class_perm |= lacl[pos].a_perm;
|
||||
}
|
||||
/* And note the position of the DEF_GROUP_OBJ entry. */
|
||||
else if (type == DEF_GROUP_OBJ)
|
||||
def_pgrp_pos = pos;
|
||||
@ -514,7 +521,7 @@ getacl (HANDLE handle, path_conv &pc, int nentries, aclent_t *aclbufp)
|
||||
CLASS_OBJ entry. The CLASS_OBJ permissions are the or'ed permissions
|
||||
of the primary group permissions and all secondary user and group
|
||||
permissions. */
|
||||
if (class_perm && (pos = searchace (lacl, MAX_ACL_ENTRIES, 0)) >= 0)
|
||||
if (has_class_perm && (pos = searchace (lacl, MAX_ACL_ENTRIES, 0)) >= 0)
|
||||
{
|
||||
lacl[pos].a_type = CLASS_OBJ;
|
||||
lacl[pos].a_id = ILLEGAL_GID;
|
||||
@ -552,7 +559,8 @@ getacl (HANDLE handle, path_conv &pc, int nentries, aclent_t *aclbufp)
|
||||
fake a matching DEF_CLASS_OBJ entry. The DEF_CLASS_OBJ permissions are
|
||||
the or'ed permissions of the primary group default permissions and all
|
||||
secondary user and group default permissions. */
|
||||
if (def_class_perm && (pos = searchace (lacl, MAX_ACL_ENTRIES, 0)) >= 0)
|
||||
if (has_def_class_perm
|
||||
&& (pos = searchace (lacl, MAX_ACL_ENTRIES, 0)) >= 0)
|
||||
{
|
||||
lacl[pos].a_type = DEF_CLASS_OBJ;
|
||||
lacl[pos].a_id = ILLEGAL_GID;
|
||||
|
Loading…
x
Reference in New Issue
Block a user