src/server/config/keyfile.c

changeset 141
ff311b63c3af
parent 115
51d9a15eac98
child 174
8f2a834d1d68
equal deleted inserted replaced
140:93247a579184 141:ff311b63c3af
55 return conf; 55 return conf;
56 } 56 }
57 57
58 void free_keyfile_config(KeyfileConfig *conf) { 58 void free_keyfile_config(KeyfileConfig *conf) {
59 if(conf->users) { 59 if(conf->users) {
60 ucx_list_free(conf->users); 60 ucx_list_free_a(conf->parser.mp, conf->users);
61 } 61 }
62 ucx_mempool_destroy(conf->parser.mp->pool); 62 ucx_mempool_destroy(conf->parser.mp->pool);
63 free(conf); 63 free(conf);
64 } 64 }
65 65
118 // get groups 118 // get groups
119 if(tkn == 3) { 119 if(tkn == 3) {
120 sstr_t groups_str = sstrtrim(tk[2]); 120 sstr_t groups_str = sstrtrim(tk[2]);
121 ssize_t ngroups = 0; 121 ssize_t ngroups = 0;
122 sstr_t *groups = sstrsplit(groups_str, sstrn(",", 1), &ngroups); 122 sstr_t *groups = sstrsplit(groups_str, sstrn(",", 1), &ngroups);
123 entry->groups = mp->calloc(mp->pool, ngroups, sizeof(sstr_t)); 123 if(ngroups > 0) {
124 entry->numgroups = ngroups; 124 entry->groups = mp->calloc(mp->pool, ngroups, sizeof(sstr_t));
125 for(int i=0;i<ngroups;i++) { 125 entry->numgroups = ngroups;
126 entry->groups[i] = sstrdup_a(mp, sstrtrim(groups[i])); 126 for(int i=0;i<ngroups;i++) {
127 free(groups[i].ptr); 127 entry->groups[i] = sstrdup_a(mp, sstrtrim(groups[i]));
128 free(groups[i].ptr);
129 }
130 free(groups);
128 } 131 }
129 free(groups);
130 } 132 }
131 133
132 // add user 134 // add user
133 conf->users = ucx_list_append_a(mp, conf->users, entry); 135 conf->users = ucx_list_append_a(mp, conf->users, entry);
134 136

mercurial