X-Git-Url: https://git.tokkee.org/?p=collectd.git;a=blobdiff_plain;f=src%2Fconfigfile.c;h=be777c52a02cbb0074c405fa7909ab0a3968c3b9;hp=5920c53129628c3691af816843aff70af8f55e5c;hb=178db08806318e0b01de2e7a9261f18d6f7ca72d;hpb=a05485da75ec42a9aa38354e0d0364885b1ecad9 diff --git a/src/configfile.c b/src/configfile.c index 5920c531..be777c52 100644 --- a/src/configfile.c +++ b/src/configfile.c @@ -564,7 +564,7 @@ static int cf_include_all (oconfig_item_t *root, int depth) 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); @@ -582,6 +582,7 @@ static int cf_include_all (oconfig_item_t *root, int depth) static oconfig_item_t *cf_read_file (const char *file, int depth) { oconfig_item_t *root; + int status; assert (depth < CF_MAX_DEPTH); @@ -592,7 +593,12 @@ static oconfig_item_t *cf_read_file (const char *file, int 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 */ @@ -783,12 +789,6 @@ static oconfig_item_t *cf_read_generic (const char *path, int depth) wordfree (&we); - if (root->children == NULL) - { - oconfig_free (root); - return (NULL); - } - return (root); } /* oconfig_item_t *cf_read_generic */ /* #endif HAVE_WORDEXP_H */ @@ -999,6 +999,12 @@ int cf_read (char *filename) 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++) {