summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ldap/servers/plugins/bitwise/bitwise.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/ldap/servers/plugins/bitwise/bitwise.c b/ldap/servers/plugins/bitwise/bitwise.c
index 7dbdc1f0..6a4dc65a 100644
--- a/ldap/servers/plugins/bitwise/bitwise.c
+++ b/ldap/servers/plugins/bitwise/bitwise.c
@@ -105,12 +105,16 @@ internal_bitwise_filter_match(void* obj, Slapi_Entry* entry, Slapi_Attr* attr, i
*/
{
struct bitwise_match_cb *bmc = obj;
- unsigned long long a, b;
- char *val_from_entry = NULL;
auto int rc = -1; /* no match */
+ char **ary = NULL;
+ int ii;
- val_from_entry = slapi_entry_attr_get_charptr(entry, bmc->type);
- if (val_from_entry) {
+ ary = slapi_entry_attr_get_charray(entry, bmc->type);
+
+ /* look through all values until we find a match */
+ for (ii = 0; (rc == -1) && ary && ary[ii]; ++ii) {
+ unsigned long long a, b;
+ char *val_from_entry = ary[ii];
errno = 0;
a = strtoull(val_from_entry, NULL, 10);
if (errno != ERANGE) {
@@ -130,8 +134,8 @@ internal_bitwise_filter_match(void* obj, Slapi_Entry* entry, Slapi_Attr* attr, i
}
}
}
- slapi_ch_free_string(&val_from_entry);
}
+ slapi_ch_array_free(ary);
return rc;
}