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

r26421:4b0fc75f default
r32050:77eaf953 4.1.3 stable
Show More
test-identify.t
132 lines | 2.4 KiB | text/troff | Tads3Lexer
Matt Mackall
tests: replace exit 80 with #require
r22046 #require serve
Mads Kiilerich
tests: convert some 'hghave no-outer-repo' to #if...
r17014
#if no-outer-repo
Nicolas Dumazet
tests: unify test-identify
r11796
no repo
$ hg id
Martin Geisler
Merge with stable
r12070 abort: there is no Mercurial repository here (.hg not found)
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Nicolas Dumazet
tests: unify test-identify
r11796
Mads Kiilerich
tests: convert some 'hghave no-outer-repo' to #if...
r17014 #endif
Nicolas Dumazet
tests: unify test-identify
r11796 create repo
$ hg init test
$ cd test
$ echo a > a
$ hg ci -Ama
adding a
basic id usage
$ hg id
cb9a9f314b8b tip
$ hg id --debug
cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b tip
$ hg id -q
cb9a9f314b8b
$ hg id -v
cb9a9f314b8b tip
with options
$ hg id -r.
cb9a9f314b8b tip
$ hg id -n
0
$ hg id -t
tip
$ hg id -b
default
$ hg id -i
cb9a9f314b8b
$ hg id -n -t -b -i
cb9a9f314b8b 0 default tip
with modifications
$ echo b > a
$ hg id -n -t -b -i
cb9a9f314b8b+ 0+ default tip
other local repo
$ cd ..
$ hg -R test id
cb9a9f314b8b+ tip
Mads Kiilerich
tests: convert some 'hghave no-outer-repo' to #if...
r17014 #if no-outer-repo
Nicolas Dumazet
tests: unify test-identify
r11796 $ hg id test
cb9a9f314b8b+ tip
Mads Kiilerich
tests: convert some 'hghave no-outer-repo' to #if...
r17014 #endif
Nicolas Dumazet
tests: unify test-identify
r11796
with remote http repo
$ cd test
$ hg serve -p $HGPORT1 -d --pid-file=hg.pid
$ cat hg.pid >> $DAEMON_PIDS
$ hg id http://localhost:$HGPORT1/
cb9a9f314b8b
Kevin Bullock
id: add bookmarks to id...
r13477 remote with rev number?
$ hg id -n http://localhost:$HGPORT1/
Nils Adermann
identify: list bookmarks for remote repositories
r13644 abort: can't query remote revision number, branch, or tags
Kevin Bullock
id: add bookmarks to id...
r13477 [255]
Nicolas Dumazet
tests: unify test-identify
r11796 remote with tags?
$ hg id -t http://localhost:$HGPORT1/
Nils Adermann
identify: list bookmarks for remote repositories
r13644 abort: can't query remote revision number, branch, or tags
Kevin Bullock
id: add bookmarks to id...
r13477 [255]
remote with branch?
$ hg id -b http://localhost:$HGPORT1/
Nils Adermann
identify: list bookmarks for remote repositories
r13644 abort: can't query remote revision number, branch, or tags
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Adrian Buehlmann
introduce new RequirementError (issue2649)...
r13447
David Soria Parra
tests: add tests for bookmarks support in hg identify
r13645 test bookmark support
$ hg bookmark Y
$ hg bookmark Z
$ hg bookmarks
Y 0:cb9a9f314b8b
* Z 0:cb9a9f314b8b
$ hg id
cb9a9f314b8b+ tip Y/Z
$ hg id --bookmarks
Y Z
test remote identify with bookmarks
$ hg id http://localhost:$HGPORT1/
cb9a9f314b8b Y/Z
$ hg id --bookmarks http://localhost:$HGPORT1/
Y Z
$ hg id -r . http://localhost:$HGPORT1/
cb9a9f314b8b Y/Z
$ hg id --bookmarks -r . http://localhost:$HGPORT1/
Y Z
Mads Kiilerich
httppeer: reintroduce _abort that accidentally was removed in 167047ba3cfa...
r21188 test invalid lookup
$ hg id -r noNoNO http://localhost:$HGPORT1/
abort: unknown revision 'noNoNO'!
[255]
Adrian Buehlmann
introduce new RequirementError (issue2649)...
r13447 Make sure we do not obscure unknown requires file entries (issue2649)
$ echo fake >> .hg/requires
$ hg id
Mads Kiilerich
repo: rephrase the "missing requirement" error message...
r20820 abort: repository requires features unknown to this Mercurial: fake!
Matt Mackall
urls: bulk-change primary website URLs
r26421 (see https://mercurial-scm.org/wiki/MissingRequirement for more information)
Adrian Buehlmann
introduce new RequirementError (issue2649)...
r13447 [255]
$ cd ..
Mads Kiilerich
tests: convert some 'hghave no-outer-repo' to #if...
r17014 #if no-outer-repo
Adrian Buehlmann
introduce new RequirementError (issue2649)...
r13447 $ hg id test
Mads Kiilerich
repo: rephrase the "missing requirement" error message...
r20820 abort: repository requires features unknown to this Mercurial: fake!
Matt Mackall
urls: bulk-change primary website URLs
r26421 (see https://mercurial-scm.org/wiki/MissingRequirement for more information)
Adrian Buehlmann
introduce new RequirementError (issue2649)...
r13447 [255]
Mads Kiilerich
tests: convert some 'hghave no-outer-repo' to #if...
r17014 #endif