On Fri, Sep 27, 2013 at 6:17 AM, Glenn Fowler <[email protected]> wrote: > On Fri, 27 Sep 2013 04:17:31 +0200 Roland Mainz wrote: >> On Fri, Sep 27, 2013 at 3:50 AM, Roland Mainz <[email protected]> >> wrote: >> > The following code from one of my test scripts no longer work in >> > ast-ksh.2013-09-26 on Solaris 11/AMD64/64bit: >> > -- snip -- >> > $ ksh -c 'redirect {n}<. ; redirect {m}</dev/file/flags@xattr@/dev/fd/$n ' >> > /home/test001/bin/ksh: /dev/file/flags@xattr@/dev/fd/11: cannot open >> > [Invalid argument] >> > -- snip -- >> > >> > This fails because of the following code tries to open the parent dir >> > of an XATTR dir via: >> > -- snip -- >> > 227 #if O_XATTR >> > 228 if ((f = openat(dev.fd, ".", >> > O_INTERCEPT|O_RDONLY|O_XATTR)) >= 0) >> > 229 { >> > 230 fd = openat(f, "..", >> > oflags|O_INTERCEPT, mode); >> > 231 close(f); >> > 232 return fd; >> > 233 } >> > 234 #endif >> > -- snip -- >> > >> > ... erm.. I don't understand this... what is this code trying to do ? > >> This patch fixes the problem: >> -- snip -- >> diff -r -u original/src/lib/libast/path/pathopen.c >> build_i386_64bit_debug/src/lib/libast/path/pathopen.c >> --- src/lib/libast/path/pathopen.c 2013-08-29 07:17:52.000000000 +0200 >> +++ src/lib/libast/path/pathopen.c 2013-09-27 04:06:38.362136396 +0200 >> @@ -222,16 +222,12 @@ > >> /* preserve open() semantics if possible */ > >> - if (oflags & (O_DIRECTORY|O_SEARCH)) >> - return openat(dev.fd, ".", >> oflags|O_INTERCEPT, mode); >> -#if O_XATTR >> - if ((f = openat(dev.fd, ".", >> O_INTERCEPT|O_RDONLY|O_XATTR)) >= 0) >> - { >> - fd = openat(f, "..", oflags|O_INTERCEPT, >> mode); >> - close(f); >> - return fd; >> - } >> + if (oflags & (O_DIRECTORY|O_SEARCH >> +#ifdef O_XATTR >> + |O_XATTR >> #endif >> + )) >> + return openat(dev.fd, ".", >> oflags|O_INTERCEPT, mode); > > this patch is wrong -- don't apply it > see my previous post
Why is it wrong ? The |fd = openat(f, "..", oflags|O_INTERCEPT, mode);| in the original code could've never worked in any possible way because ".." in an xattr directory is doomed to fail anyway... ---- Bye, Roland -- __ . . __ (o.\ \/ /.o) [email protected] \__\/\/__/ MPEG specialist, C&&JAVA&&Sun&&Unix programmer /O /==\ O\ TEL +49 641 3992797 (;O/ \/ \O;) _______________________________________________ ast-developers mailing list [email protected] http://lists.research.att.com/mailman/listinfo/ast-developers
