diff --git a/src/scconf/parse.c b/src/scconf/parse.c index 8f90c811..17299996 100644 --- a/src/scconf/parse.c +++ b/src/scconf/parse.c @@ -152,6 +152,8 @@ scconf_item *scconf_item_add(scconf_context * config, scconf_block * block, scco parser.current_item->value.comment = strdup((char *) data); break; case SCCONF_ITEM_TYPE_BLOCK: + if (!dst) + return NULL; dst->parent = parser.block; parser.current_item->value.block = dst; scconf_list_destroy(parser.name); @@ -192,8 +194,11 @@ scconf_block *scconf_block_add(scconf_context * config, scconf_block * block, co { scconf_parser parser; + if (!config) + return NULL; + memset(&parser, 0, sizeof(scconf_parser)); - parser.config = config ? config : NULL; + parser.config = config; parser.key = key ? strdup(key) : NULL; parser.block = block ? block : config->root; scconf_list_copy(name, &parser.name);