Fix issue 55.

Don't process any key/value pairs until we've hitting a mapping.
remotes/origin/master-1.0.x
Jason Ish 15 years ago committed by Victor Julien
parent c4f178f3d7
commit 5e318aa342

@ -227,6 +227,10 @@ ConfYamlParse(yaml_parser_t *parser)
level--;
break;
case YAML_SCALAR_EVENT:
if (level < 0) {
/* Don't process values until we've hit a mapping. */
continue;
}
if (state == CONF_KEY) {
if (key[level] != NULL)
free(key[level]);
@ -412,6 +416,24 @@ logging:\n\
return 1;
}
/**
* This test is mainly to make sure we don't segfaul when passed some
* other file.
*/
static int
ConfYamlNonYamlFileTest(void)
{
ConfCreateContextBackup();
ConfInit();
ConfYamlLoadFile("/etc/passwd");
ConfDeInit();
ConfRestoreContextBackup();
return 1;
}
#endif /* UNITTESTS */
void
@ -420,5 +442,6 @@ ConfYamlRegisterTests(void)
#ifdef UNITTESTS
UtRegisterTest("ConfYamlRuleFileTest", ConfYamlRuleFileTest, 1);
UtRegisterTest("ConfYamlLoggingOutputTest", ConfYamlLoggingOutputTest, 1);
UtRegisterTest("ConfYamlNonYamlFileTest", ConfYamlNonYamlFileTest, 1);
#endif /* UNITTESTS */
}

Loading…
Cancel
Save