diff options
| author | Maxime Coste <mawww@kakoune.org> | 2018-09-22 22:11:21 +1000 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2018-09-22 22:11:21 +1000 |
| commit | 9c1c763a37b336db1ba77a4fb28d7ec4d044fe87 (patch) | |
| tree | 04a48466bef7f0e7a10203dbaf275b928a20557e /src | |
| parent | 9db9fe612d73cbad87ccd4102377884a301ab45a (diff) | |
Reject hook names that are not alphanumeric _ or - or start with -
Fixes #2414
Diffstat (limited to 'src')
| -rw-r--r-- | src/commands.cc | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/commands.cc b/src/commands.cc index c3cf21da..7aad5549 100644 --- a/src/commands.cc +++ b/src/commands.cc @@ -866,6 +866,11 @@ const CommandDesc add_hook_cmd = { Regex regex{parser[2], RegexCompileFlags::Optimize}; const String& command = parser[3]; auto group = parser.get_switch("group").value_or(StringView{}); + + if (any_of(group, [](char c) { return not is_word(c, { '-' }); }) or + (not group.empty() and not is_word(group[0]))) + throw runtime_error{format("invalid group name '{}'", group)}; + const auto flags = (parser.get_switch("always") ? HookFlags::Always : HookFlags::None) | (parser.get_switch("once") ? HookFlags::Once : HookFlags::None); get_scope(parser[0], context).hooks().add_hook(parser[1], group.str(), flags, |
