From: Alexander Kapshuk <alexander.kapshuk@gmail.com>
To: 9fans <9fans@9fans.net>
Subject: Re: [9fans] `test -x` returns wrong results for directories
Date: Sat, 6 Jun 2020 15:11:30 +0300 [thread overview]
Message-ID: <CAJ1xhMWTu0y+FfKhoQtpGCW4n61K_n6OK9zENaeb6kCsCJ5qng@mail.gmail.com> (raw)
In-Reply-To: <33fdd954-db9a-4273-a0ac-907f07b42499@www.fastmail.com>
On Sat, Jun 6, 2020 at 9:38 AM Ethan Gardener <eekee57@fastmail.fm> wrote:
>
> On Fri, Jun 5, 2020, at 8:22 PM, Richard Miller wrote:
> > Looks to me like access(2) is not doing the right thing for directory
> > execute (=search) permission.
>
> thanks for the tip. access is a very simple function. it doesn't do the right thing, but there's a reason:
>
> BUGS
> Since file permissions are checked by the server and group
> information is not known to the client, access must open the
> file to check permissions. (It calls stat(2) to check sim-
> ple existence.)
>
> it's open() which is failing. i suppose it should.
>
> if the open fails, maybe access should stat the file, and if it's a directory, try dirread(2). or maybe just opening it for reading will work. i don't know, i'm new to this bit of plan 9 & i haven't slept.
>
In sysopen, there is a call to namec:
/sys/src/9/port/sysfile.c:272
c = namec((char*)arg[0], Aopen, arg[1], 0);
Namec would return an error when called to open a directory with
execute permissions:
/sys/src/9/port/chan.c:1453,1454
if(amode == Aopen && (omode&3) == OEXEC && (c->qid.type&QTDIR))
error("cannot exec directory");
But I'm not sure if this is where the problem actually is, as I haven't seen
the 'cannot exec directory' message when running 'test -x dir' in
acid:
cpu% test -x ch7
cpu% echo $status
test 528: false
cpu% acid -l truss /bin/test
/bin/test:386 plan 9 executable
/sys/lib/acid/port
/sys/lib/acid/386
/sys/lib/acid/truss
acid: progargs = "-x ch7"
acid: new()
acid: truss()
open("ch7", 3)
return value: -1
open("#c/pid", 0)
return value: 3
pread(3, 0xdfffef08, 20, 4294967295)
return value: 12
data: " 533 "
close(3)
return value: 0
533: breakpoint _exits+0x5 INTB $0x40
next prev parent reply other threads:[~2020-06-06 12:12 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-05 12:45 Ethan Gardener
2020-06-05 19:22 ` [9fans] " Richard Miller
2020-06-06 6:36 ` Ethan Gardener
2020-06-06 12:11 ` Alexander Kapshuk [this message]
2020-06-06 13:25 ` Charles Forsyth
2020-06-07 13:56 ` Ethan Gardener
2020-06-06 21:13 ` ori
2020-06-07 14:48 ` Ethan Gardener
2020-06-07 15:41 ` Richard Miller
2020-06-08 2:04 ` ori
2020-06-08 2:13 ` Charles Forsyth
2020-06-08 2:20 ` Charles Forsyth
2020-06-09 10:50 ` Ethan Gardener
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAJ1xhMWTu0y+FfKhoQtpGCW4n61K_n6OK9zENaeb6kCsCJ5qng@mail.gmail.com \
--to=alexander.kapshuk@gmail.com \
--cc=9fans@9fans.net \
/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 NNTP newsgroup(s).