--- a/src/server/config/keyfile.c Thu Dec 29 10:15:43 2016 +0100 +++ b/src/server/config/keyfile.c Fri Dec 30 14:15:52 2016 +0100 @@ -57,7 +57,7 @@ void free_keyfile_config(KeyfileConfig *conf) { if(conf->users) { - ucx_list_free(conf->users); + ucx_list_free_a(conf->parser.mp, conf->users); } ucx_mempool_destroy(conf->parser.mp->pool); free(conf); @@ -120,13 +120,15 @@ sstr_t groups_str = sstrtrim(tk[2]); ssize_t ngroups = 0; sstr_t *groups = sstrsplit(groups_str, sstrn(",", 1), &ngroups); - entry->groups = mp->calloc(mp->pool, ngroups, sizeof(sstr_t)); - entry->numgroups = ngroups; - for(int i=0;i<ngroups;i++) { - entry->groups[i] = sstrdup_a(mp, sstrtrim(groups[i])); - free(groups[i].ptr); + if(ngroups > 0) { + entry->groups = mp->calloc(mp->pool, ngroups, sizeof(sstr_t)); + entry->numgroups = ngroups; + for(int i=0;i<ngroups;i++) { + entry->groups[i] = sstrdup_a(mp, sstrtrim(groups[i])); + free(groups[i].ptr); + } + free(groups); } - free(groups); } // add user