##// 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:

r29686:6e375ba0 default
r32050:77eaf953 4.1.3 stable
Show More
test-unbundlehash.t
45 lines | 1.4 KiB | text/troff | Tads3Lexer
/ tests / test-unbundlehash.t
Matt Mackall
tests: replace exit 80 with #require
r22046 #require killdaemons
Shuhei Takahashi
wireproto: allow unbundle with hashed heads parameter (issue2126)...
r13942
Test wire protocol unbundle with hashed heads (capability: unbundlehash)
Pierre-Yves David
test: lock test-unbundlehash to bundle1 usage...
r25374 $ cat << EOF >> $HGRCPATH
Pierre-Yves David
tests: use 'legacy.exchange' option in various bundle1 tests...
r29686 > [devel]
Pierre-Yves David
test: lock test-unbundlehash to bundle1 usage...
r25374 > # This tests is intended for bundle1 only.
> # bundle2 carries the head information inside the bundle itself and
> # always uses 'force' as the heads value.
Pierre-Yves David
tests: use 'legacy.exchange' option in various bundle1 tests...
r29686 > legacy.exchange = bundle1
Pierre-Yves David
test: lock test-unbundlehash to bundle1 usage...
r25374 > EOF
Shuhei Takahashi
wireproto: allow unbundle with hashed heads parameter (issue2126)...
r13942 Create a remote repository.
$ hg init remote
$ hg serve -R remote --config web.push_ssl=False --config web.allow_push=* -p $HGPORT -d --pid-file=hg1.pid -E error.log -A access.log
$ cat hg1.pid >> $DAEMON_PIDS
Clone the repository and push a change.
$ hg clone http://localhost:$HGPORT/ local
no changes found
updating to branch default
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ touch local/README
$ hg ci -R local -A -m hoge
adding README
$ hg push -R local
pushing to http://localhost:$HGPORT/
searching for changes
remote: adding changesets
remote: adding manifests
remote: adding file changes
remote: added 1 changesets with 1 changes to 1 files
Ensure hashed heads format is used.
The hash here is always the same since the remote repository only has the null head.
$ cat access.log | grep unbundle
timeless
tests: tolerate http2...
r28996 * - - [*] "POST /?cmd=unbundle HTTP/1.1" 200 - x-hgarg-1:heads=686173686564+6768033e216468247bd031a0a2d9876d79818f8f* (glob)
Patrick Mezard
tests: enable more server tests on Windows
r17539
Explicitly kill daemons to let the test exit on Windows
Matt Mackall
tests: drop DAEMON_PIDS from killdaemons calls
r25474 $ killdaemons.py
Patrick Mezard
tests: enable more server tests on Windows
r17539