diff --git a/config.c b/config.c index 42e2f6a5351639af1ac4c9457e746e2dfa864475..d758d7fac1a3dcae82e021174986f3f11f1010fc 100755 --- a/config.c +++ b/config.c @@ -177,6 +177,7 @@ static int cfg_process(struct ast_config *tmp, struct ast_category **_tmpc, stru "Out of memory, line %d\n", lineno); return -1; } + memset(*_tmpc, 0, sizeof(struct ast_category)); strncpy((*_tmpc)->name, cur+1, sizeof((*_tmpc)->name) - 1); (*_tmpc)->root = NULL; (*_tmpc)->next = tmp->root; @@ -237,6 +238,7 @@ static int cfg_process(struct ast_config *tmp, struct ast_category **_tmpc, stru c++; v = malloc(sizeof(struct ast_variable)); if (v) { + memset(v, 0, sizeof(struct ast_variable)); v->next = NULL; v->name = strdup(strip(cur)); v->value = strdup(strip(c)); @@ -283,7 +285,8 @@ static struct ast_config *__ast_load(char *configfile, struct ast_config *tmp, s ast_verbose( "Found\n"); if (!tmp) { tmp = malloc(sizeof(struct ast_config)); - tmp->root = NULL; + if (tmp) + memset(tmp, 0, sizeof(struct ast_config)); } if (!tmp) { ast_log(LOG_WARNING, "Out of memory\n");