Mercurial > hg > mercurial-source
view tests/test-empty-dir.t @ 27874:15c6eb0a51bd
context: use a the nofsauditor when matching file in history (issue4749)
Before this change, asking for file from history (eg: 'hg cat -r 42 foo/bar')
could fail because of the current content of the working copy (eg: current
"foo" being a symlink). As the working copy state have no influence on the
content of the history, we can safely skip these checks.
The working copy context class have a different 'match'
implementation. That implementation still use the repo.auditor will
still catch symlink traversal.
I've audited all stuff calling "match" and they all go through a ctx
in a sensible way. The most unclear case was diff which still seemed
okay. You raised my paranoid level today and I double checked through
tests. They behave properly.
The odds of someone using the wrong (matching with a changectx for
operation that will eventually touch the file system) is non-zero
because you are never sure of what people will do. But I dunno if we
can fight against that. So I would not commit to "never" for "at this
level" and "in the future" if someone write especially bad code.
However, as a last defense, the vfs itself is running path auditor in
all cases outside of .hg/. So I think anything passing the 'matcher'
for buggy reason would growl at the vfs layer.
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Thu, 03 Dec 2015 13:23:46 -0800 |
parents | 3b165c127690 |
children |
line wrap: on
line source
$ hg init $ echo 123 > a $ hg add a $ hg commit -m "first" a $ mkdir sub $ echo 321 > sub/b $ hg add sub/b $ hg commit -m "second" sub/b $ cat sub/b 321 $ hg co 0 0 files updated, 0 files merged, 1 files removed, 0 files unresolved $ cat sub/b 2>/dev/null || echo "sub/b not present" sub/b not present $ test -d sub || echo "sub not present" sub not present