Mercurial > public > mercurial-scm > hg-stable
diff mercurial/util.py @ 13197:684a977c2ae0
opener: forbid paths ending with directory separator (issue2507)
If Linux is asked to open a filename with a trailing directory separator,
e.g. "foo/", the open fails with EISDIR. On AIX, the open succeeds, opening
file "foo". This causes test-mq-qnew to fail on AIX.
Fix by adding 'ends with directory separator' to the conditions checked
by the path auditor. Change test to expect auditor fail message.
author | Jim Hague <jim.hague@acm.org> |
---|---|
date | Fri, 17 Dec 2010 12:05:45 +0000 |
parents | f5be619663f9 |
children | 6f011cf52f9a |
line wrap: on
line diff
--- a/mercurial/util.py Tue Dec 21 15:27:58 2010 -0600 +++ b/mercurial/util.py Fri Dec 17 12:05:45 2010 +0000 @@ -487,6 +487,7 @@ '''ensure that a filesystem path contains no banned components. the following properties of a path are checked: + - ends with a directory separator - under top-level .hg - starts at the root of a windows drive - contains ".." @@ -504,6 +505,9 @@ def __call__(self, path): if path in self.audited: return + # AIX ignores "/" at end of path, others raise EISDIR. + if endswithsep(path): + raise Abort(_("path ends in directory separator: %s") % path) normpath = os.path.normcase(path) parts = splitpath(normpath) if (os.path.splitdrive(path)[0]