[PATCH v2] Ensure standard file descriptors are open on start
Michael Morrell
mmorrell@tachyum.com
Wed Aug 19 21:04:04 GMT 2020
The ISO C quote says they don't need to be opened (an application can just start using them), but it doesn't say they have to be open. It is perfectly OK for them to be closed at startup. Also, it talks about the FILE streams stdin, stdout, and stderr, not file descriptors 0, 1, and 2.
-----Original Message-----
From: Libc-alpha <libc-alpha-bounces@sourceware.org> On Behalf Of Arsen Arsenovic via Libc-alpha
Sent: Wednesday, August 19, 2020 12:40 PM
To: Joseph Myers <joseph@codesourcery.com>
Cc: libc-alpha@sourceware.org
Subject: Re: [PATCH v2] Ensure standard file descriptors are open on start
> Please give specific references, not just "as required by POSIX and C".
> What exactly do you think requires these descriptors to be open?
The sections that lead me to believe this were:
http://www.iso-9899.info/n1570.html#7.21.3p7
https://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_05
What would be the best way to reference these in source code? I can wait for some more potential feedback to aggregate, and for a consensus to be reached, before updating the patch with that, to reduce patch spam.
POSIX also, in other pages, occasionally mentions the danger of a file being unexpectedly open as one of three special file descriptors, which I presume is the reason for the hardening glibc was already doing for SUID binaries.
> "If a standard utility or a conforming application is executed with
> file descriptor 0 not open for reading or with file descriptor 1 or 2
> not open for writing, the environment in which the utility or
> application is executed shall be deemed non-conforming, and
> consequently the utility or application might not behave as described in this standard."
This specific part of the quote would seem to imply that standard input, output and error must be opened for reading and writing respectively?
Or do you think this only applies if the implementation decides to handle opening the file descriptors?
--
Arsen Arsenović
More information about the Libc-alpha
mailing list