The problem here was that some parts of the ldb_message were still
attached to the ldb_ldif structure, and when only the message was
taken (and the ldif free'ed to reclaim memory) we refereced free'ed
memory.
Andrew Bartlett
if (!el->values) {
goto failed;
}
if (!el->values) {
goto failed;
}
- ret = a->syntax->ldif_read_fn(ldb, ldif, &value, &el->values[el->num_values]);
+ ret = a->syntax->ldif_read_fn(ldb, el->values, &value, &el->values[el->num_values]);
if (ret != 0) {
goto failed;
}
if (ret != 0) {
goto failed;
}
el->num_values++;
} else {
/* its a new attribute */
el->num_values++;
} else {
/* its a new attribute */
- msg->elements = talloc_realloc(ldif, msg->elements,
+ msg->elements = talloc_realloc(msg, msg->elements,
struct ldb_message_element,
msg->num_elements+1);
if (!msg->elements) {
struct ldb_message_element,
msg->num_elements+1);
if (!msg->elements) {
goto failed;
}
el->num_values = 1;
goto failed;
}
el->num_values = 1;
- ret = a->syntax->ldif_read_fn(ldb, ldif, &value, &el->values[0]);
+ ret = a->syntax->ldif_read_fn(ldb, el->values, &value, &el->values[0]);
if (ret != 0) {
goto failed;
}
if (ret != 0) {
goto failed;
}