r19733: More work to fix ldb_map. With the wildcard present,
authorAndrew Bartlett <abartlet@samba.org>
Thu, 16 Nov 2006 09:55:58 +0000 (09:55 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:28:16 +0000 (14:28 -0500)
map_attr_find_local() always returns, which is exactly what we don't
want.  Instead, rely on the overwrite behaviour.

Andrew Bartlett
(This used to be commit 9b9b7bae16a635d9a9ba72d21a4a4718d294c9b0)

source4/lib/ldb/modules/ldb_map_outbound.c

index 505df795337340780aabc11f57a6536ea1f80282..6305e6666fe0915b770edd3af4f99444b858b64a 100644 (file)
@@ -348,12 +348,8 @@ static int ldb_msg_el_merge_wildcard(struct ldb_module *module, struct ldb_messa
        /* Perhaps we have a mapping for "*" */
        if (map && map->type == MAP_KEEP) {
                /* We copy everything over, and hope that anything with a 
-                  more specific rule is overwritten, or caught by the test below */
+                  more specific rule is overwritten */
                for (i = 0; i < remote->num_elements; i++) {
-                       if (map_attr_find_local(data, remote->elements[i].name)) {
-                               /* The name this would have been copied to has a more specific mapping */
-                               continue;
-                       }
                        el = ldb_msg_el_map_remote(module, local, map, remote->elements[i].name,
                                                   &remote->elements[i]);
                        if (el == NULL) {
@@ -1039,7 +1035,7 @@ int map_up_callback(struct ldb_context *ldb, const struct ldb_request *req, stru
        /* Limit result to requested attrs */
        if ((req->op.search.attrs) && (!ldb_attr_in_list(req->op.search.attrs, "*"))) {
                for (i = 0; i < ares->message->num_elements; ) {
-                       const struct ldb_message_element *el = &ares->message->elements[i];
+                       struct ldb_message_element *el = &ares->message->elements[i];
                        if (!ldb_attr_in_list(req->op.search.attrs, el->name)) {
                                ldb_msg_remove_element(ares->message, el);
                        } else {