Commit 36131d16 authored by Dominik Charousset's avatar Dominik Charousset

Fix infinite recursion in read_ini

Close #894.
parent e96daa80
...@@ -308,7 +308,8 @@ void read_ini(state<Iterator, Sentinel>& ps, Consumer&& consumer) { ...@@ -308,7 +308,8 @@ void read_ini(state<Iterator, Sentinel>& ps, Consumer&& consumer) {
transition(init, " \t\n") transition(init, " \t\n")
fsm_epsilon(read_ini_comment(ps, consumer), init, ';') fsm_epsilon(read_ini_comment(ps, consumer), init, ';')
transition(start_section, '[') transition(start_section, '[')
fsm_epsilon_if(tmp == "global", read_ini_section(ps, begin_section()), return_to_global) fsm_epsilon_if(tmp == "global", read_ini_section(ps, begin_section()),
return_to_global, alnum)
} }
// Read the section key after reading an '['. // Read the section key after reading an '['.
state(start_section) { state(start_section) {
......
...@@ -242,6 +242,14 @@ const auto ini1_log = make_log( ...@@ -242,6 +242,14 @@ const auto ini1_log = make_log(
); );
// clang-format on // clang-format on
const char* ini2 = "#";
const auto ini2_log = make_log();
const char* ini3 = "; foobar\n!";
const auto ini3_log = make_log();
} // namespace <anonymous> } // namespace <anonymous>
CAF_TEST_FIXTURE_SCOPE(read_ini_tests, fixture) CAF_TEST_FIXTURE_SCOPE(read_ini_tests, fixture)
...@@ -264,4 +272,9 @@ CAF_TEST(section with valid key-value pairs) { ...@@ -264,4 +272,9 @@ CAF_TEST(section with valid key-value pairs) {
CAF_CHECK_EQUAL(parse(ini1), ini1_log); CAF_CHECK_EQUAL(parse(ini1), ini1_log);
} }
CAF_TEST(invalid inis) {
CAF_CHECK_EQUAL(parse(ini2), ini2_log);
CAF_CHECK_EQUAL(parse(ini3), ini3_log);
}
CAF_TEST_FIXTURE_SCOPE_END() CAF_TEST_FIXTURE_SCOPE_END()
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment