Author: abartlet
Date: 2006-08-10 10:31:27 +0000 (Thu, 10 Aug 2006)
New Revision: 17476

WebSVN: 
http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=17476

Log:
Don't duplicate extensibleObject if the caller added it.

Andrew Bartlett

Modified:
   branches/SOC/mkhl/ldb-map/modules/ldb_map.c


Changeset:
Modified: branches/SOC/mkhl/ldb-map/modules/ldb_map.c
===================================================================
--- branches/SOC/mkhl/ldb-map/modules/ldb_map.c 2006-08-10 10:03:42 UTC (rev 
17475)
+++ branches/SOC/mkhl/ldb-map/modules/ldb_map.c 2006-08-10 10:31:27 UTC (rev 
17476)
@@ -1905,6 +1905,7 @@
 {
        struct ldb_message_element *el, *oc;
        struct ldb_val val;
+       BOOL found_extensibleObject = False;
        int i;
 
        /* Find old local objectClass */
@@ -1935,14 +1936,21 @@
        /* Convert all local objectClasses */
        for (i = 0; i < el->num_values - 1; i++) {
                el->values[i] = map_objectclass_convert_local(module, 
el->values, &oc->values[i]);
+               if (ldb_attr_cmp((char *)el->values[i].data, 
"extensibleObject")) {
+                       found_extensibleObject = True;
+               }
        }
 
-       val.data = (uint8_t *)talloc_strdup(el->values, "extensibleObject");
-       val.length = strlen((char *)val.data);
+       if (!found_extensibleObject) {
+               val.data = (uint8_t *)talloc_strdup(el->values, 
"extensibleObject");
+               val.length = strlen((char *)val.data);
+               
+               /* Append additional objectClass "extensibleObject" */
+               el->values[i] = val;
+       } else {
+               el->num_values--;
+       }
 
-       /* Append additional objectClass "extensibleObject" */
-       el->values[i] = val;
-
        /* Add new objectClass to remote message */
        ldb_msg_add(remote, el, 0);
 }

Reply via email to