diff options
author | Pavel Březina <pbrezina@redhat.com> | 2016-01-05 11:17:38 +0100 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2016-01-19 14:33:42 +0100 |
commit | ad5a48c4947183fda49308259e3411d17a8b0a13 (patch) | |
tree | 78766d800286acd88aad50656ba3cd62bf41349a /src | |
parent | d06cc0974e59cd6cf1da45cc8c60d6e822b731c2 (diff) | |
download | sssd-ad5a48c4947183fda49308259e3411d17a8b0a13.tar.gz sssd-ad5a48c4947183fda49308259e3411d17a8b0a13.tar.xz sssd-ad5a48c4947183fda49308259e3411d17a8b0a13.zip |
SDAP: Add sdap_or_filters
Reviewed-by: Sumit Bose <sbose@redhat.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/providers/ldap/ldap_common.h | 4 | ||||
-rw-r--r-- | src/providers/ldap/sdap_utils.c | 30 |
2 files changed, 27 insertions, 7 deletions
diff --git a/src/providers/ldap/ldap_common.h b/src/providers/ldap/ldap_common.h index e5fee51e7..bdd02d822 100644 --- a/src/providers/ldap/ldap_common.h +++ b/src/providers/ldap/ldap_common.h @@ -264,6 +264,10 @@ errno_t list_missing_attrs(TALLOC_CTX *mem_ctx, bool sdap_is_secure_uri(const char *uri); +char *sdap_or_filters(TALLOC_CTX *mem_ctx, + const char *base_filter, + const char *extra_filter); + char *sdap_combine_filters(TALLOC_CTX *mem_ctx, const char *base_filter, const char *extra_filter); diff --git a/src/providers/ldap/sdap_utils.c b/src/providers/ldap/sdap_utils.c index 47921b876..347206c21 100644 --- a/src/providers/ldap/sdap_utils.c +++ b/src/providers/ldap/sdap_utils.c @@ -149,9 +149,11 @@ errno_t deref_string_to_val(const char *str, int *val) return EOK; } -char *sdap_combine_filters(TALLOC_CTX *mem_ctx, - const char *base_filter, - const char *extra_filter) +static char * +sdap_combine_filters_ex(TALLOC_CTX *mem_ctx, + char operator, + const char *base_filter, + const char *extra_filter) { char *filter = NULL; @@ -162,12 +164,26 @@ char *sdap_combine_filters(TALLOC_CTX *mem_ctx, } if (extra_filter[0] == '(') { - filter = talloc_asprintf(mem_ctx, "(&%s%s)", - base_filter, extra_filter); + filter = talloc_asprintf(mem_ctx, "(%c%s%s)", + operator, base_filter, extra_filter); } else { - filter = talloc_asprintf(mem_ctx, "(&%s(%s))", - base_filter, extra_filter); + filter = talloc_asprintf(mem_ctx, "(%c%s(%s))", + operator, base_filter, extra_filter); } return filter; /* NULL or not */ } + +char *sdap_or_filters(TALLOC_CTX *mem_ctx, + const char *base_filter, + const char *extra_filter) +{ + return sdap_combine_filters_ex(mem_ctx, '|', base_filter, extra_filter); +} + +char *sdap_combine_filters(TALLOC_CTX *mem_ctx, + const char *base_filter, + const char *extra_filter) +{ + return sdap_combine_filters_ex(mem_ctx, '&', base_filter, extra_filter); +} |