mirror of
https://github.com/samba-team/samba.git
synced 2024-12-23 17:34:34 +03:00
r437: fixed handling of a corner case with multi-valued indexing
This commit is contained in:
parent
4d92e6f79f
commit
b386121856
@ -590,6 +590,14 @@ static int ltdb_index_add1_add(struct ldb_context *ldb,
|
||||
char *dn)
|
||||
{
|
||||
struct ldb_val *v2;
|
||||
int i;
|
||||
|
||||
/* for multi-valued attributes we can end up with repeats */
|
||||
for (i=0;i<msg->elements[idx].num_values;i++) {
|
||||
if (strcmp(dn, msg->elements[idx].values[i].data) == 0) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
v2 = realloc_p(msg->elements[idx].values,
|
||||
struct ldb_val,
|
||||
|
@ -204,12 +204,18 @@ static struct ldb_message *ltdb_pull_attrs(struct ldb_context *ldb,
|
||||
|
||||
/*
|
||||
see if a ldb_val is a wildcard
|
||||
return 1 if yes, 0 if no
|
||||
*/
|
||||
int ltdb_has_wildcard(struct ldb_context *ldb, const char *attr_name,
|
||||
const struct ldb_val *val)
|
||||
{
|
||||
int flags;
|
||||
|
||||
/* all attribute types recognise the "*" wildcard */
|
||||
if (val->length == 1 && strncmp((char *)val->data, "*", 1) == 0) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (strpbrk(val->data, "*?") == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user