summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: a05485d)
raw | patch | inline | side by side (parent: a05485d)
author | Florian Forster <octo@collectd.org> | |
Thu, 30 May 2013 06:58:06 +0000 (08:58 +0200) | ||
committer | Florian Forster <octo@collectd.org> | |
Thu, 30 May 2013 06:58:06 +0000 (08:58 +0200) |
cf_read_generic() returned NULL in two cases: Unable to read file and
file was empty. Since we wanted to allow empty includes, the "include
file with errors" case was not handled properly.
Github: #323
file was empty. Since we wanted to allow empty includes, the "include
file with errors" case was not handled properly.
Github: #323
src/configfile.c | patch | blob | history |
diff --git a/src/configfile.c b/src/configfile.c
index 5920c53129628c3691af816843aff70af8f55e5c..be777c52a02cbb0074c405fa7909ab0a3968c3b9 100644 (file)
--- a/src/configfile.c
+++ b/src/configfile.c
new = cf_read_generic (old->values[0].value.string, depth + 1);
if (new == NULL)
- continue;
+ return (-1);
/* Now replace the i'th child in `root' with `new'. */
cf_ci_replace_child (root, new, i);
static oconfig_item_t *cf_read_file (const char *file, int depth)
{
oconfig_item_t *root;
+ int status;
assert (depth < CF_MAX_DEPTH);
return (NULL);
}
- cf_include_all (root, depth);
+ status = cf_include_all (root, depth);
+ if (status != 0)
+ {
+ oconfig_free (root);
+ return (NULL);
+ }
return (root);
} /* oconfig_item_t *cf_read_file */
wordfree (&we);
- if (root->children == NULL)
- {
- oconfig_free (root);
- return (NULL);
- }
-
return (root);
} /* oconfig_item_t *cf_read_generic */
/* #endif HAVE_WORDEXP_H */
ERROR ("Unable to read config file %s.", filename);
return (-1);
}
+ else if (conf->children_num == 0)
+ {
+ ERROR ("Configuration file %s is empty.", filename);
+ oconfig_free (conf);
+ return (-1);
+ }
for (i = 0; i < conf->children_num; i++)
{