Use correct gid value for Microsoft Account when /etc/group is in use
* sec_acl.cc (get_posix_access): In case owner SID == group SID, when encountering the group entry, change the value of `id' accordingly. Explain why. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
parent
bfe23aa437
commit
47e7288769
|
@ -1,3 +1,9 @@
|
||||||
|
2015-11-29 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
|
* sec_acl.cc (get_posix_access): In case owner SID == group SID, when
|
||||||
|
encountering the group entry, change the value of `id' accordingly.
|
||||||
|
Explain why.
|
||||||
|
|
||||||
2015-11-28 Corinna Vinschen <corinna@vinschen.de>
|
2015-11-28 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
* gendef (sigdelayed): Save and restore content of the MXCSR register
|
* gendef (sigdelayed): Save and restore content of the MXCSR register
|
||||||
|
|
|
@ -811,6 +811,12 @@ get_posix_access (PSECURITY_DESCRIPTOR psd,
|
||||||
if (owner_eq_group && !saw_group_obj)
|
if (owner_eq_group && !saw_group_obj)
|
||||||
{
|
{
|
||||||
type = GROUP_OBJ;
|
type = GROUP_OBJ;
|
||||||
|
/* Gid and uid are not necessarily the same even if the
|
||||||
|
SID is the same: /etc/group is in use and the user got
|
||||||
|
added to /etc/group using another gid than the uid.
|
||||||
|
This is a border case but it happened and resetting id
|
||||||
|
to gid is not much of a burden. */
|
||||||
|
id = gid;
|
||||||
if (ace->Header.AceType == ACCESS_ALLOWED_ACE_TYPE)
|
if (ace->Header.AceType == ACCESS_ALLOWED_ACE_TYPE)
|
||||||
saw_group_obj = true;
|
saw_group_obj = true;
|
||||||
}
|
}
|
||||||
|
@ -871,8 +877,12 @@ get_posix_access (PSECURITY_DESCRIPTOR psd,
|
||||||
if (saw_def_user_obj)
|
if (saw_def_user_obj)
|
||||||
{
|
{
|
||||||
if (owner_eq_group && !saw_def_group_obj && attr & S_ISGID)
|
if (owner_eq_group && !saw_def_group_obj && attr & S_ISGID)
|
||||||
type = GROUP_OBJ; /* This needs post-processing in the
|
{
|
||||||
following GROUP_OBJ handling... */
|
/* This needs post-processing in the following GROUP_OBJ
|
||||||
|
handling... Set id to ILLEGAL_GID to play it safe. */
|
||||||
|
type = GROUP_OBJ;
|
||||||
|
id = ILLEGAL_GID;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
type = USER;
|
type = USER;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue