diff --git a/plugins/header_rewrite/header_rewrite_test.cc b/plugins/header_rewrite/header_rewrite_test.cc index 7ec83230a36..36702c1761f 100644 --- a/plugins/header_rewrite/header_rewrite_test.cc +++ b/plugins/header_rewrite/header_rewrite_test.cc @@ -557,6 +557,24 @@ test_tokenizer() END_TEST(); } + { + SimpleTokenizerTest p("{a}%{PATH}"); + CHECK_EQ(p.get_tokens().size(), 2UL); + CHECK_EQ(p.get_tokens()[0], "{a}"); + CHECK_EQ(p.get_tokens()[1], "%{PATH}"); + + END_TEST(); + } + + { + SimpleTokenizerTest p("%{PATH}"); + CHECK_EQ(p.get_tokens().size(), 2UL); + CHECK_EQ(p.get_tokens()[0], ""); + CHECK_EQ(p.get_tokens()[1], "%{PATH}"); + + END_TEST(); + } + return errors; } diff --git a/plugins/header_rewrite/parser.cc b/plugins/header_rewrite/parser.cc index c1f467d39a8..ed3a7e27da1 100644 --- a/plugins/header_rewrite/parser.cc +++ b/plugins/header_rewrite/parser.cc @@ -344,7 +344,7 @@ HRWSimpleTokenizer::HRWSimpleTokenizer(const std::string &line) switch (state) { case PARSER_DEFAULT: if ((line[i] == '{') || (line[i] == '<')) { - if (line[i - 1] == '%') { + if (i > 0 && line[i - 1] == '%') { // pickup what we currently have cur_token_length = i - cur_token_start - 1; if (cur_token_length > 0) {