[PATCH v4 3/3] Respect `db_home: env` even when no uid can be determined

Johannes Schindelin Johannes.Schindelin@gmx.de
Mon Apr 3 06:45:32 GMT 2023


Hi Corinna,

On Tue, 28 Mar 2023, Corinna Vinschen wrote:

> On Mar 28 10:17, Johannes Schindelin wrote:
> > In particular when we cannot figure out a uid for the current user, we
> > should still respect the `db_home: env` setting. Such a situation occurs
> > for example when the domain returned by `LookupAccountSid()` is not our
> > machine name and at the same time our machine is no domain member: In
> > that case, we have nobody to ask for the POSIX offset necessary to come
> > up with the uid.
> >
> > It is important that even in such cases, the `HOME` environment variable
> > can be used to override the home directory, e.g. when Git for Windows is
> > used by an account that was generated on the fly, e.g. for transient use
> > in a cloud scenario.
>
> How does this kind of account look like?  I'd like to see the contants
> of name, domain, and the SID.  Isn't that just an account closely
> resembling Micorosft Accounts or AzureAD accounts?  Can't we somehow
> handle them alike?

It took a good while to remind me what was going on there. Essentially, I
had to dig up a mail from 2016 that David Ebbo sent me via my work email
(because he was working on Kudu, the Azure shell, where this issue arose).
Sadly, David is no longer a colleague of mine (he seems to work at Google
now), so I cannot pester him about details. Besides, it might be too long
ago to remember details, anyways.

What I _can_ do is try to recreate the problem (the report said that this
happens in a Kudu console of an Azure Web App, see
https://github.com/projectkudu/kudu/wiki/Kudu-console) by creating a new
Azure Web App and opening that console and run Cygwin within it, which is
what I am going to do now.

> > Reported by David Ebbo.
>
> This should be
>
>   Reported-By: David Ebbo <email address>

Will fix. Naturally, it won't be his Microsoft email address any longer,
but the recent patches I obtained from repositories at
https://github.com/davidebbo/ have a GMail address on record.

> > diff --git a/winsup/cygwin/uinfo.cc b/winsup/cygwin/uinfo.cc
> > index d493d29b3b..b01bcff5cb 100644
> > --- a/winsup/cygwin/uinfo.cc
> > +++ b/winsup/cygwin/uinfo.cc
> > @@ -883,6 +883,8 @@ fetch_from_path (cyg_ldap *pldap, PUSER_INFO_3 ui, cygpsid &sid, PCWSTR str,
> >  	    case L'u':
> >  	      if (full_qualified)
> >  		{
> > +		  if (!dom)
> > +		    break;
>
> No domain?  Really?

Yes, I distinctly remember that I had to do that, otherwise the code would
not work as intended.

Ciao,
Johannes


More information about the Cygwin-patches mailing list