summaryrefslogtreecommitdiffstats
path: root/src/providers/ldap
diff options
context:
space:
mode:
authorSumit Bose <sbose@redhat.com>2010-11-26 10:46:11 +0100
committerStephen Gallagher <sgallagh@redhat.com>2010-12-02 09:38:10 -0500
commitd1571f8c173ca9172fa295e6aac48b8c0c367950 (patch)
treeac2208fa402a2718bf0023cd06d7c4d986565213 /src/providers/ldap
parentc99f085747aabafc4a440b5bfd1d9a6bea995620 (diff)
downloadsssd-d1571f8c173ca9172fa295e6aac48b8c0c367950.tar.gz
sssd-d1571f8c173ca9172fa295e6aac48b8c0c367950.tar.xz
sssd-d1571f8c173ca9172fa295e6aac48b8c0c367950.zip
Add a special filter type to handle enumerations
Diffstat (limited to 'src/providers/ldap')
-rw-r--r--src/providers/ldap/ldap_id.c23
1 files changed, 6 insertions, 17 deletions
diff --git a/src/providers/ldap/ldap_id.c b/src/providers/ldap/ldap_id.c
index 1a9b2e09d..9121a3e9f 100644
--- a/src/providers/ldap/ldap_id.c
+++ b/src/providers/ldap/ldap_id.c
@@ -210,13 +210,10 @@ static void users_get_done(struct tevent_req *subreq)
}
if (ret == ENOENT) {
- if (strchr(state->name, '*')) {
- /* it was an enumeration */
+ switch (state->filter_type) {
+ case BE_FILTER_ENUM:
tevent_req_error(req, ret);
return;
- }
-
- switch (state->filter_type) {
case BE_FILTER_NAME:
ret = sysdb_delete_user(state, state->sysdb,
state->domain, state->name, 0);
@@ -442,13 +439,10 @@ static void groups_get_done(struct tevent_req *subreq)
}
if (ret == ENOENT) {
- if (strchr(state->name, '*')) {
- /* it was an enumeration */
+ switch (state->filter_type) {
+ case BE_FILTER_ENUM:
tevent_req_error(req, ret);
return;
- }
-
- switch (state->filter_type) {
case BE_FILTER_NAME:
ret = sysdb_delete_group(state, state->sysdb,
state->domain, state->name, 0);
@@ -723,7 +717,7 @@ void sdap_account_info_handler(struct be_req *breq)
case BE_REQ_USER: /* user */
/* skip enumerations on demand */
- if (strcmp(ar->filter_value, "*") == 0) {
+ if (ar->filter_type == BE_FILTER_ENUM) {
return sdap_handler_done(breq, DP_ERR_OK, EOK, "Success");
}
@@ -741,7 +735,7 @@ void sdap_account_info_handler(struct be_req *breq)
case BE_REQ_GROUP: /* group */
- if (strcmp(ar->filter_value, "*") == 0) {
+ if (ar->filter_type == BE_FILTER_ENUM) {
return sdap_handler_done(breq, DP_ERR_OK, EOK, "Success");
}
@@ -769,11 +763,6 @@ void sdap_account_info_handler(struct be_req *breq)
err = "Invalid attr type";
break;
}
- if (strchr(ar->filter_value, '*')) {
- ret = EINVAL;
- err = "Invalid filter value";
- break;
- }
req = groups_by_user_send(breq, breq->be_ctx->ev, ctx,
ar->filter_value);
if (!req) ret = ENOMEM;