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

r31747:aff7b32b default
r32050:77eaf953 4.1.3 stable
Show More
test-static-http.t
159 lines | 4.1 KiB | text/troff | Tads3Lexer
/ tests / test-static-http.t
Matt Mackall
tests: replace exit 80 with #require
r22046 #require killdaemons
Matt Mackall
tests: unify test-static-http
r12491
Adrian Buehlmann
test-static-http: partially adapt for Windows
r17020 $ hg clone http://localhost:$HGPORT/ copy
abort: * (glob)
[255]
Matt Mackall
tests: unify test-static-http
r12491 $ test -d copy
[1]
This server doesn't do range requests so it's basically only good for
one pull
Mike Hommey
tests: pull common http server setup out of individual tests...
r22959 $ python "$TESTDIR/dumbhttp.py" -p $HGPORT --pid dumb.pid
Patrick Mezard
test-static-http.t: enable on Windows...
r17538 $ cat dumb.pid >> $DAEMON_PIDS
Martin Geisler
tests: remove redundant mkdir...
r13956 $ hg init remote
Matt Mackall
tests: unify test-static-http
r12491 $ cd remote
$ echo foo > bar
Adrian Buehlmann
test-static-http.t: increase test coverage on filenames...
r13209 $ echo c2 > '.dotfile with spaces'
$ hg add
adding .dotfile with spaces
adding bar
Matt Mackall
tests: unify test-static-http
r12491 $ hg commit -m"test"
$ hg tip
Adrian Buehlmann
test-static-http.t: increase test coverage on filenames...
r13209 changeset: 0:02770d679fb8
Matt Mackall
tests: unify test-static-http
r12491 tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: test
$ cd ..
$ hg clone static-http://localhost:$HGPORT/remote local
requesting all changes
adding changesets
adding manifests
adding file changes
Adrian Buehlmann
test-static-http.t: increase test coverage on filenames...
r13209 added 1 changesets with 2 changes to 2 files
Matt Mackall
tests: unify test-static-http
r12491 updating to branch default
Adrian Buehlmann
test-static-http.t: increase test coverage on filenames...
r13209 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
Matt Mackall
tests: unify test-static-http
r12491 $ cd local
$ hg verify
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
Adrian Buehlmann
test-static-http.t: increase test coverage on filenames...
r13209 2 files, 1 changesets, 2 total revisions
Matt Mackall
tests: unify test-static-http
r12491 $ cat bar
foo
$ cd ../remote
$ echo baz > quux
$ hg commit -A -mtest2
adding quux
check for HTTP opener failures when cachefile does not exist
jfh
move tags.cache and branchheads.cache to a collected cache folder .hg/cache/...
r13272 $ rm .hg/cache/*
Matt Mackall
tests: unify test-static-http
r12491 $ cd ../local
FUJIWARA Katsunori
tests: invoke printenv.py via sh -c for test portability...
r30234 $ cat >> .hg/hgrc <<EOF
> [hooks]
> changegroup = sh -c "printenv.py changegroup"
> EOF
Matt Mackall
tests: unify test-static-http
r12491 $ hg pull
Mads Kiilerich
tests: reintroduce ":$HGPORT" in test output...
r12643 pulling from static-http://localhost:$HGPORT/remote
Matt Mackall
tests: unify test-static-http
r12491 searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
Mateusz Kwapich
hooks: add HG_NODE_LAST to txnclose and changegroup hook environments...
r27739 changegroup hook: HG_NODE=4ac2e3648604439c580c69b09ec9d93a88d93432 HG_NODE_LAST=4ac2e3648604439c580c69b09ec9d93a88d93432 HG_SOURCE=pull HG_TXNID=TXN:* HG_URL=http://localhost:$HGPORT/remote (glob)
Matt Mackall
tests: unify test-static-http
r12491 (run 'hg update' to get a working copy)
trying to push
$ hg update
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo more foo >> bar
$ hg commit -m"test"
$ hg push
Mads Kiilerich
tests: reintroduce ":$HGPORT" in test output...
r12643 pushing to static-http://localhost:$HGPORT/remote
Sune Foldager
peer: introduce canpush and improve error message
r17193 abort: destination does not support push
Matt Mackall
tests: unify test-static-http
r12491 [255]
trying clone -r
$ cd ..
timeless@mozdev.org
spelling: doesn't/does not
r17486 $ hg clone -r doesnotexist static-http://localhost:$HGPORT/remote local0
abort: unknown revision 'doesnotexist'!
Matt Mackall
tests: unify test-static-http
r12491 [255]
$ hg clone -r 0 static-http://localhost:$HGPORT/remote local0
adding changesets
adding manifests
adding file changes
Adrian Buehlmann
test-static-http.t: increase test coverage on filenames...
r13209 added 1 changesets with 2 changes to 2 files
Matt Mackall
tests: unify test-static-http
r12491 updating to branch default
Adrian Buehlmann
test-static-http.t: increase test coverage on filenames...
r13209 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
Matt Mackall
tests: unify test-static-http
r12491
Matt Mackall
tests: fixup issue markers to make check-commit happy
r22183 test with "/" URI (issue747) and subrepo
Matt Mackall
tests: unify test-static-http
r12491
$ hg init
Mads Kiilerich
statichttprepo: don't modify localrepo class variables...
r13440 $ hg init sub
Brad Hall
tag: don't allow tagging the null revision (issue1915)...
r17260 $ touch sub/test
$ hg -R sub commit -A -m "test"
adding test
Mads Kiilerich
statichttprepo: don't modify localrepo class variables...
r13440 $ hg -R sub tag not-empty
$ echo sub=sub > .hgsub
Matt Mackall
tests: unify test-static-http
r12491 $ echo a > a
Mads Kiilerich
statichttprepo: don't modify localrepo class variables...
r13440 $ hg add a .hgsub
$ hg -q ci -ma
Matt Mackall
tests: unify test-static-http
r12491 $ hg clone static-http://localhost:$HGPORT/ local2
requesting all changes
adding changesets
adding manifests
adding file changes
Mads Kiilerich
statichttprepo: don't modify localrepo class variables...
r13440 added 1 changesets with 3 changes to 3 files
Matt Mackall
tests: unify test-static-http
r12491 updating to branch default
Martin Geisler
subrepo: create subrepos using clone instead of pull...
r14281 cloning subrepo sub from static-http://localhost:$HGPORT/sub
Mads Kiilerich
statichttprepo: don't modify localrepo class variables...
r13440 requesting all changes
adding changesets
adding manifests
adding file changes
Brad Hall
tag: don't allow tagging the null revision (issue1915)...
r17260 added 2 changesets with 2 changes to 2 files
Mads Kiilerich
statichttprepo: don't modify localrepo class variables...
r13440 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
Matt Mackall
tests: unify test-static-http
r12491 $ cd local2
$ hg verify
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
Mads Kiilerich
statichttprepo: don't modify localrepo class variables...
r13440 3 files, 1 changesets, 3 total revisions
Matt Harbison
verify: check the subrepository references in .hgsubstate...
r25591 checking subrepo links
Matt Mackall
tests: unify test-static-http
r12491 $ cat a
a
$ hg paths
Mads Kiilerich
tests: reintroduce ":$HGPORT" in test output...
r12643 default = static-http://localhost:$HGPORT/
Matt Mackall
tests: unify test-static-http
r12491
test with empty repo (issue965)
$ cd ..
$ hg init remotempty
$ hg clone static-http://localhost:$HGPORT/remotempty local3
no changes found
updating to branch default
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd local3
$ hg verify
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
0 files, 0 changesets, 0 total revisions
$ hg paths
Mads Kiilerich
tests: reintroduce ":$HGPORT" in test output...
r12643 default = static-http://localhost:$HGPORT/remotempty
Matt Mackall
tests: unify test-static-http
r12491
test with non-repo
$ cd ..
$ mkdir notarepo
$ hg clone static-http://localhost:$HGPORT/notarepo local3
Mads Kiilerich
tests: reintroduce ":$HGPORT" in test output...
r12643 abort: 'http://localhost:$HGPORT/notarepo' does not appear to be an hg repository!
Matt Mackall
tests: unify test-static-http
r12491 [255]
Matt Mackall
tests: drop DAEMON_PIDS from killdaemons calls
r25474 $ killdaemons.py