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

r31315:78ac7061 default
r32050:77eaf953 4.1.3 stable
Show More
test-debugcommands.t
133 lines | 4.6 KiB | text/troff | Tads3Lexer
/ tests / test-debugcommands.t
Pierre-Yves David
test: enable generaldelta in 'test-debugcommand.t'...
r26918 $ cat << EOF >> $HGRCPATH
> [format]
> usegeneraldelta=yes
> EOF
Patrick Mezard
debugrevlog: handle numrevs == numfull case (issue3537)...
r17188 $ hg init debugrevlog
$ cd debugrevlog
$ echo a > a
$ hg ci -Am adda
adding a
$ hg debugrevlog -m
format : 1
Pierre-Yves David
test: enable generaldelta in 'test-debugcommand.t'...
r26918 flags : inline, generaldelta
Patrick Mezard
debugrevlog: handle numrevs == numfull case (issue3537)...
r17188
revisions : 1
merges : 0 ( 0.00%)
normal : 1 (100.00%)
revisions : 1
full : 1 (100.00%)
deltas : 0 ( 0.00%)
revision size : 44
full : 44 (100.00%)
deltas : 0 ( 0.00%)
Gregory Szorc
commands: print chunk type in debugrevlog...
r30452 chunks : 1
0x75 (u) : 1 (100.00%)
chunks size : 44
0x75 (u) : 44 (100.00%)
Patrick Mezard
debugrevlog: handle numrevs == numfull case (issue3537)...
r17188 avg chain length : 0
Gregory Szorc
commands.debugrevlog: report max chain length...
r24503 max chain length : 0
Patrick Mezard
debugrevlog: handle numrevs == numfull case (issue3537)...
r17188 compression ratio : 0
uncompressed data size (min/max/avg) : 43 / 43 / 43
full revision size (min/max/avg) : 44 / 44 / 44
delta size (min/max/avg) : 0 / 0 / 0
Mads Kiilerich
util: introduce util.debugstacktrace for showing a stack trace without crashing...
r20244
Kyle Lippincott
debugindex: respect --debug flag to show full nodeids
r23547 Test debugindex, with and without the --debug flag
$ hg debugindex a
Pierre-Yves David
test: enable generaldelta in 'test-debugcommand.t'...
r26918 rev offset length ..... linkrev nodeid p1 p2 (re)
Kyle Lippincott
debugindex: respect --debug flag to show full nodeids
r23547 0 0 3 .... 0 b789fdd96dc2 000000000000 000000000000 (re)
$ hg --debug debugindex a
Pierre-Yves David
test: enable generaldelta in 'test-debugcommand.t'...
r26918 rev offset length ..... linkrev nodeid p1 p2 (re)
Kyle Lippincott
debugindex: respect --debug flag to show full nodeids
r23547 0 0 3 .... 0 b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 (re)
$ hg debugindex -f 1 a
Pierre-Yves David
test: enable generaldelta in 'test-debugcommand.t'...
r26918 rev flag offset length size ..... link p1 p2 nodeid (re)
Kyle Lippincott
debugindex: respect --debug flag to show full nodeids
r23547 0 0000 0 3 2 .... 0 -1 -1 b789fdd96dc2 (re)
$ hg --debug debugindex -f 1 a
Pierre-Yves David
test: enable generaldelta in 'test-debugcommand.t'...
r26918 rev flag offset length size ..... link p1 p2 nodeid (re)
Kyle Lippincott
debugindex: respect --debug flag to show full nodeids
r23547 0 0000 0 3 2 .... 0 -1 -1 b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3 (re)
Gregory Szorc
commands: add debugdeltachain command...
r27263 debugdelta chain basic output
$ hg debugdeltachain -m
rev chain# chainlen prev delta size rawsize chainsize ratio lindist extradist extraratio
0 1 1 -1 base 44 43 44 1.02326 44 0 0.00000
$ hg debugdeltachain -m -T '{rev} {chainid} {chainlen}\n'
0 1 1
$ hg debugdeltachain -m -Tjson
[
{
"chainid": 1,
"chainlen": 1,
"chainratio": 1.02325581395,
"chainsize": 44,
"compsize": 44,
"deltatype": "base",
"extradist": 0,
"extraratio": 0.0,
"lindist": 44,
"prevrev": -1,
"rev": 0,
"uncompsize": 43
}
]
Kyle Lippincott
debugindex: respect --debug flag to show full nodeids
r23547
Mateusz Kwapich
revlog: add config variable for limiting delta-chain length...
r23255 Test max chain len
$ cat >> $HGRCPATH << EOF
Augie Fackler
localrepo: rename revlog.maxchainlen to format.maxchainlen...
r23256 > [format]
Mateusz Kwapich
revlog: add config variable for limiting delta-chain length...
r23255 > maxchainlen=4
> EOF
Augie Fackler
localrepo: rename revlog.maxchainlen to format.maxchainlen...
r23256 $ printf "This test checks if maxchainlen config value is respected also it can serve as basic test for debugrevlog -d <file>.\n" >> a
Mateusz Kwapich
revlog: add config variable for limiting delta-chain length...
r23255 $ hg ci -m a
Augie Fackler
localrepo: rename revlog.maxchainlen to format.maxchainlen...
r23256 $ printf "b\n" >> a
Mateusz Kwapich
revlog: add config variable for limiting delta-chain length...
r23255 $ hg ci -m a
Augie Fackler
localrepo: rename revlog.maxchainlen to format.maxchainlen...
r23256 $ printf "c\n" >> a
Mateusz Kwapich
revlog: add config variable for limiting delta-chain length...
r23255 $ hg ci -m a
Augie Fackler
localrepo: rename revlog.maxchainlen to format.maxchainlen...
r23256 $ printf "d\n" >> a
Mateusz Kwapich
revlog: add config variable for limiting delta-chain length...
r23255 $ hg ci -m a
Augie Fackler
localrepo: rename revlog.maxchainlen to format.maxchainlen...
r23256 $ printf "e\n" >> a
Mateusz Kwapich
revlog: add config variable for limiting delta-chain length...
r23255 $ hg ci -m a
Augie Fackler
localrepo: rename revlog.maxchainlen to format.maxchainlen...
r23256 $ printf "f\n" >> a
Mateusz Kwapich
revlog: add config variable for limiting delta-chain length...
r23255 $ hg ci -m a
Augie Fackler
localrepo: rename revlog.maxchainlen to format.maxchainlen...
r23256 $ printf 'g\n' >> a
Mateusz Kwapich
revlog: add config variable for limiting delta-chain length...
r23255 $ hg ci -m a
Augie Fackler
localrepo: rename revlog.maxchainlen to format.maxchainlen...
r23256 $ printf 'h\n' >> a
Mateusz Kwapich
revlog: add config variable for limiting delta-chain length...
r23255 $ hg ci -m a
$ hg debugrevlog -d a
# rev p1rev p2rev start end deltastart base p1 p2 rawsize totalsize compression heads chainlen
0 -1 -1 0 ??? 0 0 0 0 ??? ???? ? 1 0 (glob)
1 0 -1 ??? ??? 0 0 0 0 ??? ???? ? 1 1 (glob)
2 1 -1 ??? ??? ??? ??? ??? 0 ??? ???? ? 1 2 (glob)
3 2 -1 ??? ??? ??? ??? ??? 0 ??? ???? ? 1 3 (glob)
4 3 -1 ??? ??? ??? ??? ??? 0 ??? ???? ? 1 4 (glob)
5 4 -1 ??? ??? ??? ??? ??? 0 ??? ???? ? 1 0 (glob)
6 5 -1 ??? ??? ??? ??? ??? 0 ??? ???? ? 1 1 (glob)
7 6 -1 ??? ??? ??? ??? ??? 0 ??? ???? ? 1 2 (glob)
8 7 -1 ??? ??? ??? ??? ??? 0 ??? ???? ? 1 3 (glob)
$ cd ..
Mads Kiilerich
util: introduce util.debugstacktrace for showing a stack trace without crashing...
r20244
Test internal debugstacktrace command
$ cat > debugstacktrace.py << EOF
> from mercurial.util import debugstacktrace, dst, sys
> def f():
> dst('hello world')
> def g():
> f()
> debugstacktrace(skip=-5, f=sys.stdout)
> g()
> EOF
$ python debugstacktrace.py
hello world at:
Mads Kiilerich
tests: backout a82de9dc4f77, debugstacktrace is now stable, drop workaround
r20543 debugstacktrace.py:7 in * (glob)
Mads Kiilerich
util: introduce util.debugstacktrace for showing a stack trace without crashing...
r20244 debugstacktrace.py:5 in g
debugstacktrace.py:3 in f
stacktrace at:
Mads Kiilerich
tests: backout a82de9dc4f77, debugstacktrace is now stable, drop workaround
r20543 debugstacktrace.py:7 *in * (glob)
debugstacktrace.py:6 *in g (glob)
Mads Kiilerich
util: introduce util.debugstacktrace for showing a stack trace without crashing...
r20244 */util.py:* in debugstacktrace (glob)