On Thu, 18 Dec 2025 12:23:06 +0100
Corinna Vinschen wrote:
> From: Corinna Vinschen <[email protected]>
> 
> Do not only allow to override the (localized) group "None" as primary
> group, but also the user account.  The user account is used as primary
> group in the user token, if the user account is a Microsoft Account or
> an AzureAD account.

Is there any evidence of:
"The user account is used as primary group in the user token, "

> 
> Fixes: dc7b67316d01 ("Cygwin: uinfo: prefer token primary group")
> Signed-off-by: Corinna Vinschen <[email protected]>
> ---
>  winsup/cygwin/uinfo.cc | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/winsup/cygwin/uinfo.cc b/winsup/cygwin/uinfo.cc
> index 8e9b9e07de9d..fb4618b8a19e 100644
> --- a/winsup/cygwin/uinfo.cc
> +++ b/winsup/cygwin/uinfo.cc
> @@ -170,13 +170,17 @@ internal_getlogin (cygheap_user &user)
>        group of a local user ("None", localized), we have to find the SID
>        of that group and try to override the token primary group.  Also
>        makes sure we're not on a domain controller, where account_sid ()
> -      == primary_sid (). */
> +      == primary_sid ().
> +      CV 2025-12-05: Microsoft Accounts as well as AzureAD accounts have
> +      the primary group SID in their user token set to their own user SID.
> +      Allow to override them as well. */
>        gsid = cygheap->dom.account_sid ();
>        gsid.append (DOMAIN_GROUP_RID_USERS);
>        if (!pgrp
>         || (pwd->pw_gid != pgrp->gr_gid
>             && cygheap->dom.account_sid () != cygheap->dom.primary_sid ()
> -           && RtlEqualSid (gsid, user.groups.pgsid)))
> +           && (gsid == user.groups.pgsid
> +               || user.sid () == user.groups.pgsid)))
>       {
>         if (gsid.getfromgr (grp = internal_getgrgid (pwd->pw_gid, &cldap)))
>           {
> -- 
> 2.52.0

Other than that LGTM.

-- 
Takashi Yano <[email protected]>

Reply via email to