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) {