This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Check for existence of the path before processing '..'


 Hello!

 Some time ago i reported ability to access things like
"/usr/nonexistent/..bin". I still had this problem and i tried my hands on
fixing it.
 The patch works by checking the actual existence of the path before
removing the last component from it. For performance reasons, only one check
is done for things like "../..". Because, obviously, if "/foo/bar/baz"
exists, then "/foo/bar" exists too. Also, the check is done only after some
components have been added to the path. So, for example, current directory
(obtained when processing relative paths), will not be checked.
 I tried to add a similar test also to normalize_win32_path() function,
however this broke things like "cd /usr/src/..". For some reason, a POSIX
version of the path (but with reversed slashes) is passed to this routine
when expanding mount points, so, consequently, test for "\usr\src" using
GetFileType() fails.
 I think it's ok, at least POSIX paths now behave in POSIX way. I have
tested against performance, there is some loss (~0.2 seconds), but only for
referencing '..'.
 With this patch i am able to compile the latest version of glibc with no
problems.
 

Kind regards,
Pavel Fedin
Expert Engineer
Samsung Electronics Research center Russia


Attachment: cygwin-1.7.19-8-check-parent-path-before-double-dot.diff
Description: Binary data

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]