diff options
| -rw-r--r-- | ldap/admin/lib/dsalib_confs.c | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/ldap/admin/lib/dsalib_confs.c b/ldap/admin/lib/dsalib_confs.c index 0545e2be..3d1a34b2 100644 --- a/ldap/admin/lib/dsalib_confs.c +++ b/ldap/admin/lib/dsalib_confs.c @@ -38,10 +38,33 @@ ds_get_conf_from_file(FILE *conf) if (!PL_strncasecmp(entry, config_entry, cfg_ent_len)) { char *line = entry; while ((line = ldif_getline(&entry))) { + char *type, *value; + int vlen = 0; + int rc; + char *errmsg = NULL; + + if ( *line == '\n' || *line == '\0' ) { + break; + } + + /* this call modifies line */ + rc = ldif_parse_line(line, &type, &value, &vlen, &errmsg); + if (rc != 0) + { + if ( errmsg != NULL ) { + ds_send_error(errmsg, 0); + PR_smprintf_free(errmsg); + } else { + ds_send_error("Unknown error processing config file", 0); + } + free(begin); + return NULL; + } listsize++; conf_list = (char **) realloc(conf_list, ((listsize + 1) * sizeof(char *))); - conf_list[listsize - 1] = strdup(line); + /* this is the format expected by ds_get_config_value */ + conf_list[listsize - 1] = PR_smprintf("%s:%s", type, value); conf_list[listsize] = NULL; /* always null terminated */ } } |
