Sam Steingold wrote:
> CLISP comes with a replacement realpath implementation for platforms
> which lacks it (are there still such platforms?).

If someone provides a correct implementation of realpath for gnulib, we will
accept it. But it's better to use canonicalize_file_name(), because

  - realpath does not have size limitation and associated troubles. Citing the
    Linux manpage:

    BUGS
       Avoid using this function. It is broken by design since it
       is  impossible to determine a suitable size for the output
       buffer, resolved_path.  According to  POSIX  a  buffer  of
       size PATH_MAX suffices, but PATH_MAX need not be a defined
       constant, and may have to be  obtained  using  pathconf().
       And  asking  pathconf() does not really help, since on the
       one hand POSIX warns that the result of pathconf() may  be
       huge and unsuitable for mallocing memory. And on the other
       hand pathconf() may return -1 to signify that PATH_MAX  is
       not bounded.

  - many implementations of realpath have or had buffer overflow problems
    (FreeBSD 4 [1],  OpenBSD [2], NetBSD [3], Solaris [4], Linux libc4 and
    libc5).

Bruno

[1] http://secunia.com/advisories/9423
[2] http://secunia.com/advisories/9447
[3] http://secunia.com/advisories/9446
[4] http://www.securityfocus.com/bid/8315/solution



Reply via email to