summaryrefslogtreecommitdiffstats
path: root/src/providers/ipa/ipa_subdomains_id.c
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2016-06-19 08:25:16 +0200
committerJakub Hrozek <jhrozek@redhat.com>2016-07-07 10:28:58 +0200
commitc125e741d3111e2f9b56866ba00835ca05c6f349 (patch)
treebabcd3ba23bb731b38d0dea31773edb368671fb2 /src/providers/ipa/ipa_subdomains_id.c
parent7c083e276ac40aa29bad6f04a950026697ea4f1d (diff)
downloadsssd-c125e741d3111e2f9b56866ba00835ca05c6f349.tar.gz
sssd-c125e741d3111e2f9b56866ba00835ca05c6f349.tar.xz
sssd-c125e741d3111e2f9b56866ba00835ca05c6f349.zip
IPA: Use internal fqname format instead of parsing NSS names
Parsing the extdom plugin output is an "input" operation from the point of the IPA provider, so we need to parse the name and conversely, internally use only the qualified name. Reviewed-by: Sumit Bose <sbose@redhat.com>
Diffstat (limited to 'src/providers/ipa/ipa_subdomains_id.c')
-rw-r--r--src/providers/ipa/ipa_subdomains_id.c22
1 files changed, 10 insertions, 12 deletions
diff --git a/src/providers/ipa/ipa_subdomains_id.c b/src/providers/ipa/ipa_subdomains_id.c
index 7e53dd8dd..3f083d3cd 100644
--- a/src/providers/ipa/ipa_subdomains_id.c
+++ b/src/providers/ipa/ipa_subdomains_id.c
@@ -440,6 +440,7 @@ static void ipa_get_subdom_acct_connected(struct tevent_req *subreq)
int ret;
char *endptr;
struct req_input *req_input;
+ char *shortname;
ret = sdap_id_op_connect_recv(subreq, &dp_error);
talloc_zfree(subreq);
@@ -498,7 +499,10 @@ static void ipa_get_subdom_acct_connected(struct tevent_req *subreq)
switch (state->filter_type) {
case BE_FILTER_NAME:
req_input->type = REQ_INP_NAME;
- req_input->inp.name = talloc_strdup(req_input, state->filter);
+ /* The extdom plugin expects the shortname and domain separately */
+ ret = sss_parse_internal_fqname(req_input, state->filter,
+ &shortname, NULL);
+ req_input->inp.name = talloc_steal(req_input, shortname);
if (req_input->inp.name == NULL) {
DEBUG(SSSDBG_OP_FAILURE, "talloc_strdup failed.\n");
tevent_req_error(req, ENOMEM);
@@ -949,7 +953,6 @@ errno_t get_object_from_cache(TALLOC_CTX *mem_ctx,
SYSDB_GHOST,
SYSDB_HOMEDIR,
NULL };
- char *name;
if (ar->filter_type == BE_FILTER_SECID) {
ret = sysdb_search_object_by_sid(mem_ctx, dom, ar->filter_value, attrs,
@@ -1022,24 +1025,19 @@ errno_t get_object_from_cache(TALLOC_CTX *mem_ctx,
goto done;
}
} else if (ar->filter_type == BE_FILTER_NAME) {
- name = sss_get_domain_name(mem_ctx, ar->filter_value, dom);
- if (name == NULL) {
- DEBUG(SSSDBG_OP_FAILURE, "sss_get_domain_name failed\n");
- ret = ENOMEM;
- goto done;
- }
-
switch (ar->entry_type & BE_REQ_TYPE_MASK) {
case BE_REQ_GROUP:
- ret = sysdb_search_group_by_name(mem_ctx, dom, name, attrs, &msg);
+ ret = sysdb_search_group_by_name(mem_ctx, dom, ar->filter_value,
+ attrs, &msg);
break;
case BE_REQ_INITGROUPS:
case BE_REQ_USER:
case BE_REQ_USER_AND_GROUP:
- ret = sysdb_search_user_by_name(mem_ctx, dom, name, attrs, &msg);
+ ret = sysdb_search_user_by_name(mem_ctx, dom, ar->filter_value,
+ attrs, &msg);
if (ret == ENOENT && (ar->entry_type & BE_REQ_TYPE_MASK)
== BE_REQ_USER_AND_GROUP) {
- ret = sysdb_search_group_by_name(mem_ctx, dom, name,
+ ret = sysdb_search_group_by_name(mem_ctx, dom, ar->filter_value,
attrs, &msg);
}
break;