##// END OF EJS Templates
dispatch: protect against malicious 'hg serve --stdio' invocations (sec)...
dispatch: protect against malicious 'hg serve --stdio' invocations (sec) Some shared-ssh installations assume that 'hg serve --stdio' is a safe command to run for minimally trusted users. Unfortunately, the messy implementation of argument parsing here meant that trying to access a repo named '--debugger' would give the user a pdb prompt, thereby sidestepping any hoped-for sandboxing. Serving repositories over HTTP(S) is unaffected. We're not currently hardening any subcommands other than 'serve'. If your service exposes other commands to users with arbitrary repository names, it is imperative that you defend against repository names of '--debugger' and anything starting with '--config'. The read-only mode of hg-ssh stopped working because it provided its hook configuration to "hg serve --stdio" via --config parameter. This is banned for security reasons now. This patch switches it to directly call ui.setconfig(). If your custom hosting infrastructure relies on passing --config to "hg serve --stdio", you'll need to find a different way to get that configuration into Mercurial, either by using ui.setconfig() as hg-ssh does in this patch, or by placing an hgrc file someplace where Mercurial will read it. mitrandir@fb.com provided some extra fixes for the dispatch code and for hg-ssh in places that I overlooked.

File last commit:

r32001:c85f19c6 default
r32050:77eaf953 4.1.3 stable
Show More
test-check-code.t
50 lines | 1.9 KiB | text/troff | Tads3Lexer
/ tests / test-check-code.t
Pierre-Yves David
tests: move the '-hg' postfix for all style tests...
r27368 #require test-repo
timeless
tests: silence test-repo obsolete warning...
r29219 $ . "$TESTDIR/helpers-testrepo.sh"
Pierre-Yves David
tests: move the '-hg' postfix for all style tests...
r27368 $ check_code="$TESTDIR"/../contrib/check-code.py
$ cd "$TESTDIR"/..
New errors are not allowed. Warnings are strongly discouraged.
(The writing "no-che?k-code" is for not skipping this file when checking.)
David Soria Parra
tests: exclude bundled pywatchman from check-code test...
r30633 $ hg locate -X contrib/python-zstandard -X hgext/fsmonitor/pywatchman |
> sed 's-\\-/-g' | xargs "$check_code" --warnings --per-file=0 || false
Pierre-Yves David
tests: move the '-hg' postfix for all style tests...
r27368 Skipping i18n/polib.py it has no-che?k-code (glob)
Augie Fackler
merge with stable
r30697 mercurial/demandimport.py:312:
Pulkit Goyal
py3: add warnings in check-code related to py3...
r30665 > if os.environ.get('HGDEMANDIMPORT') != 'disable':
use encoding.environ instead (py3)
mercurial/encoding.py:54:
> environ = os.environ
use encoding.environ instead (py3)
mercurial/encoding.py:56:
> environ = os.environb
use encoding.environ instead (py3)
mercurial/encoding.py:61:
> for k, v in os.environ.items())
use encoding.environ instead (py3)
mercurial/encoding.py:203:
> for k, v in os.environ.items())
use encoding.environ instead (py3)
Pierre-Yves David
tests: move the '-hg' postfix for all style tests...
r27368 Skipping mercurial/httpclient/__init__.py it has no-che?k-code (glob)
Skipping mercurial/httpclient/_readers.py it has no-che?k-code (glob)
Pulkit Goyal
py3: add warnings in check-code related to py3...
r30665 mercurial/policy.py:45:
> policy = os.environ.get('HGMODULEPOLICY', policy)
use encoding.environ instead (py3)
Gregory Szorc
statprof: vendor statprof.py...
r30253 Skipping mercurial/statprof.py it has no-che?k-code (glob)
Pulkit Goyal
py3: add warnings in check-code related to py3...
r30665 [1]
Gregory Szorc
tests: add test that @commands in debugcommands.py are sorted...
r30540
@commands in debugcommands.py should be in alphabetical order.
>>> import re
>>> commands = []
>>> with open('mercurial/debugcommands.py', 'rb') as fh:
... for line in fh:
... m = re.match("^@command\('([a-z]+)", line)
... if m:
... commands.append(m.group(1))
>>> scommands = list(sorted(commands))
>>> for i, command in enumerate(scommands):
... if command != commands[i]:
... print('commands in debugcommands.py not sorted; first differing '
... 'command is %s; expected %s' % (commands[i], command))
... break