Show More
@@ -1,47 +1,52 b'' | |||||
1 | $ hg init empty-repo |
|
1 | $ hg init empty-repo | |
2 | $ cd empty-repo |
|
2 | $ cd empty-repo | |
3 |
|
3 | |||
4 | Flags on revlog version 0 are rejected |
|
4 | Flags on revlog version 0 are rejected | |
5 |
|
5 | |||
6 | >>> with open('.hg/store/00changelog.i', 'wb') as fh: |
|
6 | >>> with open('.hg/store/00changelog.i', 'wb') as fh: | |
7 | ... fh.write(b'\x00\x01\x00\x00') and None |
|
7 | ... fh.write(b'\x00\x01\x00\x00') and None | |
8 |
|
8 | |||
9 | $ hg log |
|
9 | $ hg log | |
10 | abort: unknown flags (0x01) in version 0 revlog 00changelog.i! |
|
10 | abort: unknown flags (0x01) in version 0 revlog 00changelog.i! | |
11 | [255] |
|
11 | [255] | |
12 |
|
12 | |||
13 | Unknown flags on revlog version 1 are rejected |
|
13 | Unknown flags on revlog version 1 are rejected | |
14 |
|
14 | |||
15 | >>> with open('.hg/store/00changelog.i', 'wb') as fh: |
|
15 | >>> with open('.hg/store/00changelog.i', 'wb') as fh: | |
16 | ... fh.write(b'\x00\x04\x00\x01') and None |
|
16 | ... fh.write(b'\x00\x04\x00\x01') and None | |
17 |
|
17 | |||
18 | $ hg log |
|
18 | $ hg log | |
19 | abort: unknown flags (0x04) in version 1 revlog 00changelog.i! |
|
19 | abort: unknown flags (0x04) in version 1 revlog 00changelog.i! | |
20 | [255] |
|
20 | [255] | |
21 |
|
21 | |||
22 | Unknown version is rejected |
|
22 | Unknown version is rejected | |
23 |
|
23 | |||
24 | >>> with open('.hg/store/00changelog.i', 'wb') as fh: |
|
24 | >>> with open('.hg/store/00changelog.i', 'wb') as fh: | |
25 | ... fh.write(b'\x00\x00\x00\x02') and None |
|
25 | ... fh.write(b'\x00\x00\x00\x02') and None | |
26 |
|
26 | |||
27 | $ hg log |
|
27 | $ hg log | |
28 | abort: unknown version (2) in revlog 00changelog.i! |
|
28 | abort: unknown version (2) in revlog 00changelog.i! | |
29 | [255] |
|
29 | [255] | |
30 |
|
30 | |||
31 | $ cd .. |
|
31 | $ cd .. | |
32 |
|
32 | |||
33 | Test for CVE-2016-3630 |
|
33 | Test for CVE-2016-3630 | |
34 |
|
34 | |||
35 | $ hg init |
|
35 | $ hg init | |
36 |
|
36 | |||
37 | >>> open("a.i", "wb").write( |
|
37 | >>> open("a.i", "wb").write( | |
38 | ... b"""eJxjYGZgZIAAYQYGxhgom+k/FMx8YKx9ZUaKSOyqo4cnuKb8mbqHV5cBCVTMWb1Cwqkhe4Gsg9AD |
|
38 | ... b"""eJxjYGZgZIAAYQYGxhgom+k/FMx8YKx9ZUaKSOyqo4cnuKb8mbqHV5cBCVTMWb1Cwqkhe4Gsg9AD | |
39 | ... Joa3dYtcYYYBAQ8Qr4OqZAYRICPTSr5WKd/42rV36d+8/VmrNpv7NP1jQAXrQE4BqQUARngwVA==""" |
|
39 | ... Joa3dYtcYYYBAQ8Qr4OqZAYRICPTSr5WKd/42rV36d+8/VmrNpv7NP1jQAXrQE4BqQUARngwVA==""" | |
40 | ... .decode("base64").decode("zlib")) |
|
40 | ... .decode("base64").decode("zlib")) | |
41 |
|
41 | |||
42 | $ hg debugindex a.i |
|
42 | $ hg debugindex a.i | |
43 | rev linkrev nodeid p1 p2 |
|
43 | rev linkrev nodeid p1 p2 | |
44 | 0 2 99e0332bd498 000000000000 000000000000 |
|
44 | 0 2 99e0332bd498 000000000000 000000000000 | |
45 | 1 3 6674f57a23d8 99e0332bd498 000000000000 |
|
45 | 1 3 6674f57a23d8 99e0332bd498 000000000000 | |
46 | $ hg debugdata a.i 1 2>&1 | egrep 'Error:.*decoded' |
|
46 | ||
47 | (mercurial\.\w+\.mpatch\.)?mpatchError: patch cannot be decoded (re) |
|
47 | >>> from mercurial import revlog, vfs | |
|
48 | >>> tvfs = vfs.vfs(b'.') | |||
|
49 | >>> tvfs.options = {b'revlogv1': True} | |||
|
50 | >>> rl = revlog.revlog(tvfs, b'a.i') | |||
|
51 | >>> rl.revision(1) | |||
|
52 | mpatchError('patch cannot be decoded',) |
General Comments 0
You need to be logged in to leave comments.
Login now