- ret = find_element(&msg2, msg->elements[i].name);
- if (ret != -1) {
- for (j=0;j<msg->elements[i].num_values;j++) {
- if (ldb_msg_find_val(&msg2.elements[ret],
- &msg->elements[i].values[j])) {
- ltdb->last_err_string = "Type or value exists";
- goto failed;
- }
+ ret = find_element(&msg2, el->name);
+
+ if (ret == -1) {
+ if (msg_add_element(ldb, &msg2, el) != 0) {
+ goto failed;
+ }
+ continue;
+ }
+
+ el2 = &msg2.elements[ret];
+
+ /* An attribute with this name already exists, add all
+ * values if they don't already exist. */
+
+ for (j=0;j<el->num_values;j++) {
+ if (ldb_msg_find_val(el2, &el->values[j])) {
+ ltdb->last_err_string =
+ "Type or value exists";
+ goto failed;