From 85e8cbdd79359ae1f330c8b84f7b58d4fc6fda6e Mon Sep 17 00:00:00 2001 From: Stephen Gallagher Date: Fri, 5 Nov 2010 11:05:38 -0400 Subject: Sanitize search filters in LDAP provider --- src/providers/ldap/ldap_id.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'src/providers/ldap/ldap_id.c') diff --git a/src/providers/ldap/ldap_id.c b/src/providers/ldap/ldap_id.c index 91b6c8ad..07e3ae17 100644 --- a/src/providers/ldap/ldap_id.c +++ b/src/providers/ldap/ldap_id.c @@ -64,6 +64,7 @@ struct tevent_req *users_get_send(TALLOC_CTX *memctx, struct tevent_req *req; struct users_get_state *state; const char *attr_name; + char *clean_name; int ret; req = tevent_req_create(memctx, &state, struct users_get_state); @@ -97,14 +98,20 @@ struct tevent_req *users_get_send(TALLOC_CTX *memctx, goto fail; } + ret = sss_filter_sanitize(state, name, &clean_name); + if (ret != EOK) { + goto fail; + } + state->filter = talloc_asprintf(state, "(&(%s=%s)(objectclass=%s))", - attr_name, name, + attr_name, clean_name, ctx->opts->user_map[SDAP_OC_USER].name); if (!state->filter) { DEBUG(2, ("Failed to build filter\n")); ret = ENOMEM; goto fail; } + talloc_zfree(clean_name); /* TODO: handle attrs_type */ ret = build_attrs_from_map(state, ctx->opts->user_map, @@ -290,6 +297,7 @@ struct tevent_req *groups_get_send(TALLOC_CTX *memctx, struct tevent_req *req; struct groups_get_state *state; const char *attr_name; + char *clean_name; int ret; req = tevent_req_create(memctx, &state, struct groups_get_state); @@ -323,14 +331,20 @@ struct tevent_req *groups_get_send(TALLOC_CTX *memctx, goto fail; } + ret = sss_filter_sanitize(state, name, &clean_name); + if (ret != EOK) { + goto fail; + } + state->filter = talloc_asprintf(state, "(&(%s=%s)(objectclass=%s))", - attr_name, name, + attr_name, clean_name, ctx->opts->group_map[SDAP_OC_GROUP].name); if (!state->filter) { DEBUG(2, ("Failed to build filter\n")); ret = ENOMEM; goto fail; } + talloc_zfree(clean_name); /* TODO: handle attrs_type */ ret = build_attrs_from_map(state, ctx->opts->group_map, -- cgit