ldap/servers/slapd/filter.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
New commits:
commit 21dda6195d750875491f11fde2d9d59c8eceb896
Author: Noriko Hosoi <nhosoi(a)redhat.com>
Date: Tue Oct 6 14:14:46 2015 -0700
Ticket #48016 - search, matching rules and filter error "unsupported type
0xA9"
Description: Since extensible filter (LDAP_FILTER_EXTENDED) was not
implemented in slapi_filter_to_string_internal, it issued a bogus
message "unsupported type 0xA9" which could be logged in the error
log and confuse the troubleshooting.
This patch adds the case LDAP_FILTER_EXTENDED to slapi_filter_to_
string{_internal}.
https://fedorahosted.org/389/ticket/48016
Reviewed by rmeggins(a)redhat.com (Thank you, Rich!!)
diff --git a/ldap/servers/slapd/filter.c b/ldap/servers/slapd/filter.c
index 7ec3fbf..d63cac8 100644
--- a/ldap/servers/slapd/filter.c
+++ b/ldap/servers/slapd/filter.c
@@ -1309,6 +1309,10 @@ slapi_filter_to_string_internal( const struct slapi_filter *f, char
*buf, size_t
operator = "~=";
break;
+ case LDAP_FILTER_EXTENDED:
+ operator = ":=";
+ break;
+
default: break;
}
@@ -1415,6 +1419,18 @@ slapi_filter_to_string_internal( const struct slapi_filter *f, char
*buf, size_t
}
break;
+ case LDAP_FILTER_EXTENDED:
+ size = strlen(f->f_mr_type) + f->f_mr_value.bv_len + strlen(operator) +
+ (f->f_mr_dnAttrs ? sizeof(":dn") - 1 : 0) +
+ (f->f_mr_oid ? strlen(f->f_mr_oid) + 1 /* : */ : 0) + 3;
+ if(size < *bufsize) {
+ sprintf(buf, "(%s%s%s%s%s%.*s)", f->f_mr_type, f->f_mr_dnAttrs ?
":dn" : "",
+ f->f_mr_oid ? ":" : "", f->f_mr_oid ? f->f_mr_oid
: "",
+ operator, (int)f->f_mr_value.bv_len, f->f_mr_value.bv_val);
+ *bufsize -= size;
+ }
+ break;
+
default:
size = 25;