Hello,

As a reminder, here is the issue:

“
$ cat bar
#!/bin/sh
echo "\$0: $0"

$ cat foo.c
...
        char *arg[] = { argv[1], NULL };
        execv (*arg, arg);
        perror ("execv");
...

$ ./foo ./bar
$0: ./bar
$ ./foo bar
$0: /dev/fd/3

Having /dev/fd/N in $0 instead of the real file name is what is breaking
libtool logic to find .libs and execute the correct binary, breaking
GLib's test suite.
”

as well as other issues met here and there in Debian packages.

Roland McGrath, le Tue 01 Jun 2010 16:22:57 -0700, a écrit :
> I am not convinced that this is worth doing.

Well, it has already been done, why not integrating it?  Not having it
upstream is giving us downstream pain.

> Any name from anywhere is always just a guess at what might be the
> right file name.

Err, not really here: the idea is to make glibc pass the filename it has
used to open the file. This is not a guess any more, this just reflects
reality.

> It is only a guess for convenience when not secure, after all.

But with this RPC extension, this is not a guess any more in cases where
it can not be one.

> There will always be cases where you can't manage to guess it.
> With fexecve, there isn't even any
> such file name to pass as a better guess than something derived from argv[0].

Sure, but in that case users will not even try to get a name from
argv[0], while in the ./foo bar case, I believe they are rightful in
thinking they can get a name from argv[0].

Samuel

Reply via email to