GNU bug report logs -
#8035
Processing of .. in a file path after going thru symlink
Previous Next
Reported by: spucci <slpnabble <at> blackberry-hill.com>
Date: Mon, 14 Feb 2011 05:50:03 UTC
Severity: normal
Tags: moreinfo
Fixed in version 28.1
Done: Lars Ingebrigtsen <larsi <at> gnus.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
> From: Lars Ingebrigtsen <larsi <at> gnus.org>
> Cc: slpnabble <at> blackberry-hill.com, 8035 <at> debbugs.gnu.org
> Date: Thu, 26 Aug 2021 19:24:28 +0200
>
> Eli Zaretskii <eliz <at> gnu.org> writes:
>
> > expand-file-name also normalizes file names, though. Which is also
> > needed in some use cases, e.g. when the /foo/bar/ isn't accessible,
> > but /foo/ is, in which case failing to normalize /foo/bar/../quux
> > could fail some file I/O function.
>
> Hm, yes, that's a point...
The OP's use case is clearly documented in the ELisp manual:
Note also that ‘expand-file-name’ does not follow symbolic links at
any level. This results in a difference between the way
‘file-truename’ and ‘expand-file-name’ treat ‘..’. Assuming that
‘/tmp/bar’ is a symbolic link to the directory ‘/tmp/foo/bar’ we
get:
(file-truename "/tmp/bar/../myfile")
⇒ "/tmp/foo/myfile"
(expand-file-name "/tmp/bar/../myfile")
⇒ "/tmp/myfile"
If you may need to follow symbolic links preceding ‘..’, you should
make sure to call ‘file-truename’ without prior direct or indirect
calls to ‘expand-file-name’. *Note Truenames::.
So I think we need to use file-truename if we want to support such
uses of symlinks in "M-x compile" etc.
This bug report was last modified 3 years and 270 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.