delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2025/03/27/07:04:35

DMARC-Filter: OpenDMARC Filter v1.4.2 delorie.com 52RB4Zrm3466473
Authentication-Results: delorie.com; dmarc=pass (p=none dis=none) header.from=cygwin.com
Authentication-Results: delorie.com; spf=pass smtp.mailfrom=cygwin.com
DKIM-Filter: OpenDKIM Filter v2.11.0 delorie.com 52RB4Zrm3466473
Authentication-Results: delorie.com;
dkim=pass (1024-bit key, unprotected) header.d=cygwin.com header.i=@cygwin.com header.a=rsa-sha256 header.s=default header.b=LYl4lzL5
X-Recipient: archive-cygwin AT delorie DOT com
DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 5975A382E2A4
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cygwin.com;
s=default; t=1743073473;
bh=qIncVTa5I5D0jTgdrlgDO6pLWAWuOcrpzKw8hwS9CFM=;
h=Date:To:Subject:References:In-Reply-To:List-Id:List-Unsubscribe:
List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:
From;
b=LYl4lzL5Zt453VRIlD6HvKcLgbWrjgnibCbQnm325WxxJePFgR8c4oPwG2eirXbpM
dBMGvLQ84U9fHnnGoZTEJU9I/GyyxeTJwLm7gde2Bi2jIj6i27vVMEMGnjYvgSfzoF
nYFS3DG46nBXVm35zwaKP3FWhc1XACmX8dYSPRNI=
X-Original-To: cygwin AT cygwin DOT com
Delivered-To: cygwin AT cygwin DOT com
DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 8486A382E285
Date: Thu, 27 Mar 2025 11:49:54 +0100
To: cygwin AT cygwin DOT com
Subject: Re: symbolic link curiousity in 3.6.0
Message-ID: <Z-UtUsdcnKf4cf-F@calimero.vinschen.de>
Mail-Followup-To: cygwin AT cygwin DOT com
References: <Pine DOT BSF DOT 4 DOT 63 DOT 2503250218240 DOT 74063 AT m0 DOT truegem DOT net>
<Z-J95wRzwkj8RLeT AT calimero DOT vinschen DOT de>
<8758454b-bd9f-427b-9cc7-854ffd9b9596 AT maxrnd DOT com>
MIME-Version: 1.0
In-Reply-To: <8758454b-bd9f-427b-9cc7-854ffd9b9596@maxrnd.com>
X-BeenThere: cygwin AT cygwin DOT com
X-Mailman-Version: 2.1.30
List-Id: General Cygwin discussions and problem reports <cygwin.cygwin.com>
List-Unsubscribe: <https://cygwin.com/mailman/options/cygwin>,
<mailto:cygwin-request AT cygwin DOT com?subject=unsubscribe>
List-Archive: <https://cygwin.com/pipermail/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-request AT cygwin DOT com?subject=help>
List-Subscribe: <https://cygwin.com/mailman/listinfo/cygwin>,
<mailto:cygwin-request AT cygwin DOT com?subject=subscribe>
From: Corinna Vinschen via Cygwin <cygwin AT cygwin DOT com>
Reply-To: cygwin AT cygwin DOT com
Cc: Corinna Vinschen <corinna-cygwin AT cygwin DOT com>
Errors-To: cygwin-bounces~archive-cygwin=delorie DOT com AT cygwin DOT com
Sender: "Cygwin" <cygwin-bounces~archive-cygwin=delorie DOT com AT cygwin DOT com>

On Mar 25 15:12, Mark Geisert via Cygwin wrote:
> > 
> > Your ls output shows an at-sign after the name "bar".  You're
> > probably using an alias for ls including the -F option.  Can you
> > paste your alias here?
> 
> alias ls='ls -AF --color -bv -T 0'
> 
> The oddity occurs even if I use /bin/ls without options.
> 
> > Are you using a specific setting of the CYGWIN env var including
> > a symlink type?
> 
> The CYGWIN env var is empty.
> 
> > Can you try intermediate test release between 327 and -1?
> 
> The oldest test release available via setup is 422 and the oddity occurs
> there too.

Ok, this looks like a coreutils 9.6 problem.

What happens is that 9.6 `ls -l' tries to fetch the ACL of "bar".
However, "bar" is a symlink, and the underlying acl_get_file() function
resolves symlinks.  What it does is, it tries to open("bar") for reading
the ACL.  This is resolved into "foo", which doesn't exist.  So the open
call returns ENOENT, and this is returned to the calling ls(1) function
file_has_aclinfo().

Two frames up is the function gobble_file().  This function encounters a
return value of -1 from the called function file_has_aclinfo_cache()
with errno set to ENOENT.  Next is a funny expression:

  bool cannot_access_acl = n < 0 && errno == EACCES;

So cannot_access_acl is not set, because errno is not EACCES.

9 lines later, we have this expression:

  if (format == long_format && n < 0 && !cannot_access_acl)
    error (0, ai.u.err, "%s", quotef (full_name));

And this is what prints the "Not supported" error to stdout, because
ai.u.err is preloaded earlier with ENOTSUPP.

So the entire reason for the message is an (IMHO wrong) expectation in
terms of calling acl_get_file() on a symlink.

I'd be surprised if that doesn't occur on Linux as well, unless it's
wrong that Cygwin's acl_get_file() follows symlinks.

However, I checked this scenario codewise against libacl, which is the
library providing acl_get_file() on Linux.

ACLs on Linux are stored in extended attributes, and consequentially
libacl's acl_get_file() calls getxattr(filename, ...) to fetch the ACL.
Note, it calls getxattr, NOT lgetxattr, so it follows symlinks just as
Cygwin's acl_get_file().

What surprises me is that you say it doesn't occur prior to the -327
test release.  It occurs even back to 3.5.5 for me.  The error occuring
here shouldn't depend on the Cygwin version.  "foo" doesn't exist and
the open() behaviour of acl_get_file() has never changed for symlinks.


Corinna

-- 
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019