On Tue, Mar 01, 2022 at 07:26:24PM +0200, Niko Tyni wrote: > Hi, sorry for the delay. > > On Sun, Dec 12, 2021 at 12:15:50AM +0200, Peter Pentchev wrote: > > Package: perl > > Version: 5.32.1-6 > > Severity: normal > > > [roam@exodar ~]$ perl -e 'use v5.10; use strict; use warnings; sysopen my > > $fh, "/bin/ls", 0 or die "sysopen: $!\n"; say "fd ".fileno $fh; my $data; > > sysread $fh, $data, 32 or die "sysread: $!\n"; say length $data;' > > fd 3 > > sysread: Bad file descriptor > > Quoting https://www.gnu.org/software/libc/manual/html_node/Access-Modes.html > > On GNU/Hurd systems (but not on other systems), O_RDONLY and O_WRONLY > are independent bits that can be bitwise-ORed together, and it is > valid for either bit to be set or clear. This means that O_RDWR is the > same as O_RDONLY|O_WRONLY. A file access mode of zero is permissible; > it allows no operations that do input or output to the file, but does > allow other operations such as fchmod. > > Indeed, using Fcntl::O_RDONLY instead of 0 works fine for me on exodar. > > Python behaves the same btw: > > exodar% python3 -c 'import os; print(len(os.read(os.open("/bin/ls", 0), > 32)))' > Traceback (most recent call last): > File "<string>", line 1, in <module> > OSError: [Errno 1073741833] Bad file descriptor > > Closing, but let me know if there are still issues.
Oh wow. That was embarrassing. Thanks a *lot* for looking at this and for pointing out the blindingly obvious. I really have no idea how that happened... I mean, I *never* write open(..., 0) in C; I have no idea why I wrote it there and why I did not notice it afterwards. Thanks again, sorry for wasting your time, and keep up the great work! G'luck, Peter -- Peter Pentchev r...@ringlet.net r...@debian.org p...@storpool.com PGP key: http://people.FreeBSD.org/~roam/roam.key.asc Key fingerprint 2EE7 A7A5 17FC 124C F115 C354 651E EFB0 2527 DF13
signature.asc
Description: PGP signature