Subject: symlink to null string and realpath()
To: None <tech-userlevel@netbsd.org>
From: enami tsugutomo <enami@but-b.or.jp>
List: tech-userlevel
Date: 01/23/2005 10:19:29
If a path ends with symlink to null string and it is passed to
realpath(), the realpath() successes but kernel doesn't allow
traversal of such symlink.  So, the result returned by realpath()
isn't suitable as real path.

Is there any standards that suggests which should be fixed?

enami.

% ls -l /tmp/nul | cat -vet
lrwxr-xr-x  1 enami  wheel  0 Jan 23 09:32 /tmp/nul -> $
% cat r.c
int
main(int argc, char *argv[])
{
        char p[1024];

        if (--argc)
                printf("%p, %s\n", realpath(*++argv, p), p);
}
% cc r.c
% ./a.out /tmp/nul
0xbfbff2f4, /tmp
% /bin/sh -c 'cd /tmp && /bin/pwd'
/tmp
% /bin/sh -c 'cd /tmp/nul && /bin/pwd'
cd: can't cd to /tmp/nul
%