diff options
Diffstat (limited to 'src/providers/ldap/ldap_common.c')
-rw-r--r-- | src/providers/ldap/ldap_common.c | 33 |
1 files changed, 23 insertions, 10 deletions
diff --git a/src/providers/ldap/ldap_common.c b/src/providers/ldap/ldap_common.c index 4f78313bc..743b00b79 100644 --- a/src/providers/ldap/ldap_common.c +++ b/src/providers/ldap/ldap_common.c @@ -706,19 +706,9 @@ errno_t sdap_parse_search_base(TALLOC_CTX *mem_ctx, struct dp_option *opts, int class, struct sdap_search_base ***_search_bases) { - errno_t ret; - struct sdap_search_base **search_bases; - TALLOC_CTX *tmp_ctx; - struct ldb_context *ldb; - struct ldb_dn *ldn; - struct ldb_parse_tree *tree; const char *class_name; char *unparsed_base; - char **split_bases; - char *filter; const char *old_filter = NULL; - int count; - int i, c; *_search_bases = NULL; @@ -751,11 +741,34 @@ errno_t sdap_parse_search_base(TALLOC_CTX *mem_ctx, ("Unknown search base type: [%d]\n", class)); class_name = "UNKNOWN"; /* Non-fatal */ + break; } unparsed_base = dp_opt_get_string(opts, class); if (!unparsed_base || unparsed_base[0] == '\0') return ENOENT; + return common_parse_search_base(mem_ctx, unparsed_base, + class_name, old_filter, + _search_bases); +} + +errno_t common_parse_search_base(TALLOC_CTX *mem_ctx, + const char *unparsed_base, + const char *class_name, + const char *old_filter, + struct sdap_search_base ***_search_bases) +{ + errno_t ret; + struct sdap_search_base **search_bases; + TALLOC_CTX *tmp_ctx; + struct ldb_context *ldb; + struct ldb_dn *ldn; + struct ldb_parse_tree *tree; + char **split_bases; + char *filter; + int count; + int i, c; + tmp_ctx = talloc_new(NULL); if (!tmp_ctx) { ret = ENOMEM; |