Mercurial > hg
annotate mercurial/templates/map-cmdline.show @ 43658:0796e266d26b
dirs: resolve fuzzer OOM situation by disallowing deep directory hierarchies
It seems like 2048 directories ought to be enough for any reasonable
use of Mercurial?
A previous version of this patch scanned for slashes before any allocations
occurred. That approach is slower than this in the happy path, but much faster
than this in the case that too many slashes are encountered. We may want to
revisit it in the future using memchr() so it'll be well-optimized by the libc
we're using.
.. bc:
Mercurial will now defend against OOMs by refusing to operate on
paths with 2048 or more components. This means that _extremely_
deep path hierarchies will be rejected, but we anticipate nobody
is using hierarchies this deep.
Differential Revision: https://phab.mercurial-scm.org/D7411
author | Augie Fackler <augie@google.com> |
---|---|
date | Tue, 12 Nov 2019 10:17:59 -0500 |
parents | b45c353ebbc7 |
children |
rev | line source |
---|---|
32059
0ea1d9a750da
show: add basic labels to work template
Gregory Szorc <gregory.szorc@gmail.com>
parents:
32058
diff
changeset
|
1 # TODO there are a few deficiencies in this file: |
0ea1d9a750da
show: add basic labels to work template
Gregory Szorc <gregory.szorc@gmail.com>
parents:
32058
diff
changeset
|
2 # * The "namespace" of the labels needs to be worked out. We currently |
0ea1d9a750da
show: add basic labels to work template
Gregory Szorc <gregory.szorc@gmail.com>
parents:
32058
diff
changeset
|
3 # piggyback on existing values so color works. |
34877
eb24f1d1b50b
show: use labelcset() template alias for work (and stack) views
Denis Laxalde <denis@laxalde.org>
parents:
34714
diff
changeset
|
4 |
eb24f1d1b50b
show: use labelcset() template alias for work (and stack) views
Denis Laxalde <denis@laxalde.org>
parents:
34714
diff
changeset
|
5 %include map-cmdline.default |
34714
f4aeb952ab77
templater: load template fragments from [templates] section in map file
Yuya Nishihara <yuya@tcha.org>
parents:
34190
diff
changeset
|
6 |
f4aeb952ab77
templater: load template fragments from [templates] section in map file
Yuya Nishihara <yuya@tcha.org>
parents:
34190
diff
changeset
|
7 [templates] |
34190
4441c1113eb2
show: pass the minimum length for nodes as a template keyword
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33197
diff
changeset
|
8 showbookmarks = '{if(active, "*", " ")} {pad(bookmark, longestbookmarklen + 4)}{shortest(node, nodelen)}\n' |
33046
11f768258dcc
show: construct changeset templater during dispatch
Gregory Szorc <gregory.szorc@gmail.com>
parents:
32059
diff
changeset
|
9 |
33050
0a507da7d8ea
show: show all namespaces in "work" view
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33046
diff
changeset
|
10 showwork = '{cset_shortnode}{namespaces % cset_namespace} {cset_shortdesc}' |
33197
c5a07a3abe7d
show: implement "stack" view
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33050
diff
changeset
|
11 showstack = '{showwork}' |
33046
11f768258dcc
show: construct changeset templater during dispatch
Gregory Szorc <gregory.szorc@gmail.com>
parents:
32059
diff
changeset
|
12 |
34877
eb24f1d1b50b
show: use labelcset() template alias for work (and stack) views
Denis Laxalde <denis@laxalde.org>
parents:
34714
diff
changeset
|
13 cset_shortnode = '{labelcset(shortest(node, nodelen))}' |
33050
0a507da7d8ea
show: show all namespaces in "work" view
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33046
diff
changeset
|
14 |
0a507da7d8ea
show: show all namespaces in "work" view
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33046
diff
changeset
|
15 # Treat branch and tags specially so we don't display "default" or "tip" |
0a507da7d8ea
show: show all namespaces in "work" view
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33046
diff
changeset
|
16 cset_namespace = '{ifeq(namespace, "branches", names_branches, ifeq(namespace, "tags", names_tags, names_others))}' |
0a507da7d8ea
show: show all namespaces in "work" view
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33046
diff
changeset
|
17 names_branches = '{ifeq(branch, "default", "", " ({label('log.{colorname}', branch)})")}' |
38450
b45c353ebbc7
show: use filter() function to strip "tip" tag
Yuya Nishihara <yuya@tcha.org>
parents:
38288
diff
changeset
|
18 names_tags = '{if(filter_tags(names), |
b45c353ebbc7
show: use filter() function to strip "tip" tag
Yuya Nishihara <yuya@tcha.org>
parents:
38288
diff
changeset
|
19 " ({label('log.{colorname}', join(filter_tags(names), ' '))})")}' |
33050
0a507da7d8ea
show: show all namespaces in "work" view
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33046
diff
changeset
|
20 names_others = '{if(names, " ({label('log.{colorname}', join(names, ' '))})")}' |
0a507da7d8ea
show: show all namespaces in "work" view
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33046
diff
changeset
|
21 |
33046
11f768258dcc
show: construct changeset templater during dispatch
Gregory Szorc <gregory.szorc@gmail.com>
parents:
32059
diff
changeset
|
22 cset_shortdesc = '{label("log.description", desc|firstline)}' |
38450
b45c353ebbc7
show: use filter() function to strip "tip" tag
Yuya Nishihara <yuya@tcha.org>
parents:
38288
diff
changeset
|
23 |
b45c353ebbc7
show: use filter() function to strip "tip" tag
Yuya Nishihara <yuya@tcha.org>
parents:
38288
diff
changeset
|
24 [templatealias] |
b45c353ebbc7
show: use filter() function to strip "tip" tag
Yuya Nishihara <yuya@tcha.org>
parents:
38288
diff
changeset
|
25 filter_tags(names) = filter(names, ifeq(name, 'tip', '', name)) |