s4-rpmd: fixed a use after realloc bug
authorAndrew Tridgell <tridge@samba.org>
Fri, 1 Oct 2010 17:26:49 +0000 (10:26 -0700)
committerAndrew Tridgell <tridge@samba.org>
Fri, 1 Oct 2010 17:44:24 +0000 (10:44 -0700)
we could use old_el after the base message had been re allocated, due
to adding timestamps. We need to re-find the element before using it

Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>

source4/dsdb/samdb/ldb_modules/repl_meta_data.c

index 17dcba5929b97d93e5652ed60458c17cf2d464b2..198bb802cb16e1ba7389dd8206a28845baa55ec3 100644 (file)
@@ -4016,12 +4016,18 @@ linked_attributes[0]:
           has changed */
        if (add_time_element(msg, "whenChanged", t) != LDB_SUCCESS) {
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
        }
 
        if (add_uint64_element(msg, "uSNChanged", seq_num) != LDB_SUCCESS) {
                talloc_free(tmp_ctx);
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_operr(ldb);
+       }
+
+       old_el = ldb_msg_find_element(msg, attr->lDAPDisplayName);
+       if (old_el == NULL) {
+               talloc_free(tmp_ctx);
+               return ldb_operr(ldb);
        }
 
        ret = dsdb_check_single_valued_link(attr, old_el);