Mercurial > hg
annotate tests/test-check-help.t @ 33650:0b3fe3910ef5 stable
util: add utility method to check for bad ssh urls (SEC)
Our use of SSH has an exploit that will parse the first part of an url
blindly as a hostname. Prior to this set of security patches, a url
with '-oProxyCommand' could run arbitrary code on a user's machine. In
addition, at least on Windows, a pipe '|' can be abused to execute
arbitrary commands in a similar fashion.
We defend against this by checking ssh:// URLs and looking for a
hostname that starts with a - or contains a |.
When this happens, let's throw a big abort into the user's face so
that they can inspect what's going on.
author | Sean Farley <sean@farley.io> |
---|---|
date | Fri, 28 Jul 2017 16:32:25 -0700 |
parents | ddd65b4f3ae6 |
children | a36d3c8a0e41 |
rev | line source |
---|---|
30880
b6c051cd1231
help: test if "hg help TOPIC" reference is valid
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
1 #require test-repo |
b6c051cd1231
help: test if "hg help TOPIC" reference is valid
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
2 |
b6c051cd1231
help: test if "hg help TOPIC" reference is valid
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
3 $ . "$TESTDIR/helpers-testrepo.sh" |
b6c051cd1231
help: test if "hg help TOPIC" reference is valid
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
4 |
b6c051cd1231
help: test if "hg help TOPIC" reference is valid
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
5 $ cat <<'EOF' > scanhelptopics.py |
b6c051cd1231
help: test if "hg help TOPIC" reference is valid
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
6 > from __future__ import absolute_import, print_function |
b6c051cd1231
help: test if "hg help TOPIC" reference is valid
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
7 > import re |
b6c051cd1231
help: test if "hg help TOPIC" reference is valid
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
8 > import sys |
31498
a248bbfa0bc7
test-check-help: fix to work on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
30880
diff
changeset
|
9 > if sys.platform == "win32": |
a248bbfa0bc7
test-check-help: fix to work on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
30880
diff
changeset
|
10 > import os, msvcrt |
a248bbfa0bc7
test-check-help: fix to work on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
30880
diff
changeset
|
11 > msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY) |
30880
b6c051cd1231
help: test if "hg help TOPIC" reference is valid
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
12 > topics = set() |
b6c051cd1231
help: test if "hg help TOPIC" reference is valid
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
13 > topicre = re.compile(r':hg:`help ([a-z0-9\-.]+)`') |
b6c051cd1231
help: test if "hg help TOPIC" reference is valid
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
14 > for fname in sys.argv: |
b6c051cd1231
help: test if "hg help TOPIC" reference is valid
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
15 > with open(fname) as f: |
b6c051cd1231
help: test if "hg help TOPIC" reference is valid
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
16 > topics.update(m.group(1) for m in topicre.finditer(f.read())) |
b6c051cd1231
help: test if "hg help TOPIC" reference is valid
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
17 > for s in sorted(topics): |
b6c051cd1231
help: test if "hg help TOPIC" reference is valid
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
18 > print(s) |
b6c051cd1231
help: test if "hg help TOPIC" reference is valid
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
19 > EOF |
b6c051cd1231
help: test if "hg help TOPIC" reference is valid
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
20 |
b6c051cd1231
help: test if "hg help TOPIC" reference is valid
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
21 $ cd "$TESTDIR"/.. |
b6c051cd1231
help: test if "hg help TOPIC" reference is valid
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
22 |
b6c051cd1231
help: test if "hg help TOPIC" reference is valid
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
23 Check if ":hg:`help TOPIC`" is valid: |
b6c051cd1231
help: test if "hg help TOPIC" reference is valid
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
24 (use "xargs -n1 -t" to see which help commands are executed) |
b6c051cd1231
help: test if "hg help TOPIC" reference is valid
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
25 |
33204
ddd65b4f3ae6
tests: alias syshg and syshgenv so they can be switched conditionally
Yuya Nishihara <yuya@tcha.org>
parents:
33116
diff
changeset
|
26 $ testrepohg files 'glob:{hgdemandimport,hgext,mercurial}/**/*.py' \ |
33116
6c113a7dec52
tests: use the system hg for examining the local repository
Adam Simpkins <simpkins@fb.com>
parents:
32940
diff
changeset
|
27 > | sed 's|\\|/|g' \ |
32940
75be14993fda
cleanup: use $PYTHON to run python in many more tests
Augie Fackler <augie@google.com>
parents:
32421
diff
changeset
|
28 > | xargs $PYTHON "$TESTTMP/scanhelptopics.py" \ |
30880
b6c051cd1231
help: test if "hg help TOPIC" reference is valid
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
29 > | xargs -n1 hg help > /dev/null |