Subject: Re: bug#77621: coreutils-9.6.53-14af8 on OpenBSD 7.6
From: Pádraig Brady <[email-masked]>
To: Bruno Haible <[email-masked]>, Paul Eggert <[email-masked]>
Cc: [email-masked]
Date: Tue, 8 Apr 2025 12:07:45 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

On 08/04/2025 11:22, Bruno Haible wrote:
> Paul Eggert wrote:
>> I don't see the problem on cfarm220.cfarm.net with the current coreutils
> 
> That's because you are not on the /dev/wd0a disk on that machine.
> 
> What I see by single-stepping through "ls -Z ." in gdb is:
> 1. f->scontext gets set to "?".
> 2. Upon the first entry to function file_has_aclinfo_cache,
>     all 4 variables
>       static int unsupported_return;
>       static char *unsupported_scontext;
>       static int unsupported_scontext_err;
>       static dev_t unsupported_device;
>     are 0 or NULL, respectively. (As expected, since it's the first call
>     to this function.)
>     f->stat.st_dev is 0 (since "." is on the /dev/wd0a disk and this device
>     has major and minor number both 0).
>     Thus the condition (f->stat_ok && f->stat.st_dev == unsupported_device)
>     evaluates to true, and four lines later, in
>       ai->scontext = unsupported_scontext;
>     an scontext gets set to NULL.
> 
> The fix is obviously to ignore these 4 static variables if they have not
> been initialized. Done through the attached patch, which fixes the crash.

Excellent.
I'll also apply this logic to has_capability_cache().

Marking this as done.

thanks!
Pádraig