s4-drs: ignore zero value elements in DRS add operations
authorAndrew Tridgell <tridge@samba.org>
Wed, 23 Sep 2009 03:56:32 +0000 (20:56 -0700)
committerAndrew Tridgell <tridge@samba.org>
Wed, 23 Sep 2009 21:01:29 +0000 (14:01 -0700)
w2k8 sometimes sends us a new object via DRS with an attribute with no
values

source4/dsdb/samdb/ldb_modules/repl_meta_data.c

index 39102e5bbe95eed63b7ad28736abb91e20764d5f..bb1c5bb1a1867d770bab33797b490e0d9275b7b1 100644 (file)
@@ -1135,6 +1135,19 @@ static int replmd_replicated_apply_add(struct replmd_replicated_request *ar)
                return replmd_replicated_request_error(ar, ret);
        }
 
+       /* remove any message elements that have zero values */
+       for (i=0; i<msg->num_elements; i++) {
+               if (msg->elements[i].num_values == 0) {
+                       DEBUG(4,(__location__ ": Removing attribute %s with num_values==0\n",
+                                msg->elements[i].name));
+                       memmove(&msg->elements[i], 
+                               &msg->elements[i+1], 
+                               sizeof(msg->elements[i])*(msg->num_elements - (i+1)));
+                       msg->num_elements--;
+                       i--;
+               }
+       }
+       
        /*
         * the meta data array is already sorted by the caller
         */