bug-gnulib@gnu.org mirror (unofficial)
 help / color / mirror / Atom feed
From: Paul Eggert <eggert@cs.ucla.edu>
To: "Pádraig Brady" <P@draigBrady.com>,
	bug-gnulib@gnu.org, "Florian Weimer" <fweimer@redhat.com>,
	"Kamil Dudka" <kdudka@redhat.com>
Subject: Re: [PATCH] fchmodat, lchmod: port to buggy Linux filesystems
Date: Mon, 9 Mar 2020 11:51:24 -0700	[thread overview]
Message-ID: <17777766-ce48-6ba3-bd09-e196226e52da@cs.ucla.edu> (raw)
In-Reply-To: <13dc64af-873a-deff-276f-5a10f4a0f609@draigBrady.com>

On 3/9/20 10:30 AM, Pádraig Brady wrote:

> A very similar "ENOTSUP" problem is being reported with coreutils-8.32
> with `mknod -m 666 /dev/random c 1 8` when trying to build Fedora 
> rawhide in a chroot.
> https://bugzilla.redhat.com/1811038

I don't understand that bug report. The strace diff you mentioned in 
Comment 4 looks like the new mknod command is working. And yet the 
original bug report says new mknod command is complaining "Operation not 
supported".

Is the problem that some filesystems don't work with the chmod 
/proc/self/fd/NNN trick, and that it worked for you (the strace diff) 
but not for Mohan (the original bug report)?

> BTW I see a possible small issue in lchmod.c in this code:
> 
> +  if (chmod_errno != ENOENT)
> +    {
> +      errno = chmod_errno;
> +      return chmod_result;
> +    }
> 
> Shouldn't that also check for other lookup errors like ENOTDIR and ELOOP ?

If /proc is mounted you can't get those lookup errors. If /proc is not 
mounted then there shouldn't be anything other than an empty directory 
at /proc, in which case ENOENT is what you'll get. It is true that if 
you put something at /proc other than an empty directory you could get 
arbitrary errno values, but we don't support that sort of misconfiguration.

> Also mknod() in coreutils is calling lchmod().
> Shouldn't it be just calling chmod() as if mknod() was passed a
> symlink, then it would have already failed with EEXIST?

That would still be vulnerable to a race if someone else replaces the 
newly-created special file with a symlink between the time we call 
mknode and chmod.


  reply	other threads:[~2020-03-09 18:52 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-13 18:42 [PATCH] fchmodat, lchmod: port to buggy Linux filesystems Paul Eggert
2020-02-14  3:29 ` Bruno Haible
2020-02-16 17:24   ` Bruno Haible
2020-02-16 18:31     ` Paul Eggert
2020-02-16 18:58       ` Bruno Haible
2020-02-14  3:46 ` Bruno Haible
2020-02-14 21:02   ` Paul Eggert
2020-02-16 21:38     ` Bruno Haible
2020-02-16 22:28       ` Bruno Haible
2020-02-22 23:46       ` Bruno Haible
2020-02-23  8:15         ` Paul Eggert
2020-02-23 10:58           ` Bruno Haible
2020-02-23 23:56             ` Paul Eggert
2020-02-24  2:27               ` overriding glibc stub functions Bruno Haible
2020-02-24  7:44                 ` Paul Eggert
2020-02-23  1:35 ` [PATCH] fchmodat, lchmod: port to buggy Linux filesystems Bruno Haible
2020-02-23  7:22   ` Paul Eggert
2020-03-09 17:30 ` Pádraig Brady
2020-03-09 18:51   ` Paul Eggert [this message]
2020-03-09 23:45     ` Pádraig Brady
2020-03-10 11:52       ` Florian Weimer
2020-03-10 15:09         ` Kamil Dudka
2020-03-10 19:27         ` Pádraig Brady
2020-03-10 19:30           ` Florian Weimer
2020-03-11  8:03             ` Paul Eggert
2020-03-11  8:45               ` Florian Weimer
2020-03-11 16:04                 ` Paul Eggert
2020-03-11  8:25             ` Paul Eggert
2020-03-11  8:40               ` Florian Weimer
2020-03-11  9:04             ` Kamil Dudka
2020-03-11 16:36               ` Paul Eggert

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://lists.gnu.org/mailman/listinfo/bug-gnulib

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=17777766-ce48-6ba3-bd09-e196226e52da@cs.ucla.edu \
    --to=eggert@cs.ucla.edu \
    --cc=P@draigBrady.com \
    --cc=bug-gnulib@gnu.org \
    --cc=fweimer@redhat.com \
    --cc=kdudka@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).