unsigned x;
int l, ret;
char *parse_dn;
+ bool is_index;
if ( ! dn || dn->invalid) return false;
return false;
}
+ is_index = (strncmp(parse_dn, "DN=@INDEX:", 10) == 0);
if (strncmp(parse_dn, "B:", 2) == 0) {
parse_dn = strchr(parse_dn, ':');
continue;
case '=':
+ /* to main compatibility with earlier
+ versions of ldb indexing, we have to
+ accept the base64 encoded binary index
+ values, which contain a '=' */
+ if (is_index) {
+ if ( t ) t = NULL;
+ *d++ = *p++;
+ l++;
+ break;
+ }
+ /* fall through */
case '\n':
case '+':
case '<':
if (ldb_should_b64_encode(ldb, &v)) {
char *vstr = ldb_base64_encode(ldb, (char *)v.data, v.length);
if (!vstr) return NULL;
- /* remove trailing '=' to make it a valid DN */
- if (vstr[strlen(vstr)-1] == '=') {
- vstr[strlen(vstr)-1] = 0;
- }
ret = ldb_dn_new_fmt(ldb, ldb, "%s:%s::%s", LTDB_INDEX, attr_folded, vstr);
talloc_free(vstr);
} else {