[Replying to the right list this time...]

On 09/07/2022 13:21, Christian Franke wrote:
Jon Turney wrote:
On 07/07/2022 15:45, Christian Franke wrote:
Jon Turney wrote:
On 06/07/2022 17:34, Christian Franke wrote:
Jon Turney wrote:
On 06/07/2022 08:14, Christian Franke wrote:
[...]

BTW: 'nt_sec.setDefaultSecurity (isAdmin)' is never called with 'isAdmin==true' as 'root_scope' is always 0.

root_scope is set later, by the "Install For" option on the "Select Root Install Directory" page.

To me, this looks like a (very long standing) bug that we shouldn't be calling setAdminGroup() here, but after root_scope has been set.

If this bug is very old, I'm not sure whether this should be fixed. Setting admin group to files which are owned "only" by current user is possibly not very effective.

It's true that some people might be relying on that buggy behaviour.

I have one very old Cygwin installation from Win7 times. Very old installed files still have group="Administrator", newer files have group="None". The timestamps suggest that the regression was introduced early in 2012. The first file with group="None" is from March 2 2012.

Hmm... [1] seems like the obvious suspect for the change responsible for that, but I don't immediately see how...

[1] https://cygwin.com/git/?p=cygwin-apps/setup.git;a=commitdiff;h=befc9dd806824f22ebb740be96ba8c0ae8f63bb4;hp=34d534a6d74e5516d6691fb1d9cb6309682afa0b


Hmm... correct as this change moves UserSettings ctor behind setDefaultSecurity ():

Old version 34d534a:
...
UserSettings Settings (local_dir);
...
nt_sec.setDefaultSecurity ();
...
Main.WindowCreate()


New version befc9dd:
...
nt_sec.setDefaultSecurity ();
...
UserSettings Settings (local_dir);
...
Main.WindowCreate()


The UserSettings ctor has a somewhat hidden side effect which sets root_scope correctly:

  UserSettings::UserSettings(...);
   open_settings("setup.rc", ...);
    io_stream::open("cygfile:///etc/setup/setup.rc", ...);
     io_stream_cygfile::io_stream_cygfile("/etc/setup/setup.rc", ...);
      get_root_dir_now();
       read_mounts("");
        read_mounts_nt("");
         root_scope = isuser ? IDC_ROOT_USER : IDC_ROOT_SYSTEM;

Conclusion: Regression introduced Feb 24, 2012 (befc9dd).


Thanks for tracking this down.

That just seems... fractally wrong.

Reply via email to