s4:libnet_become_dc - Fix some uninitialised variables
[ira/wip.git] / source4 / libnet / libnet_become_dc.c
index dbbabd6a6da636f8b9e97bf17d6d101aec5c4f34..c4e786c83384f8e95112eeae3b5cdbbc9b7c85db 100644 (file)
@@ -25,7 +25,7 @@
 #include "lib/ldb/include/ldb_errors.h"
 #include "lib/ldb_wrap.h"
 #include "dsdb/samdb/samdb.h"
-#include "dsdb/common/flags.h"
+#include "../libds/common/flags.h"
 #include "librpc/gen_ndr/ndr_drsuapi_c.h"
 #include "libcli/security/security.h"
 #include "librpc/gen_ndr/ndr_misc.h"
@@ -2101,7 +2101,7 @@ static void becomeDC_drsuapi1_add_entry_send(struct libnet_BecomeDC_state *s)
                vd[0] = data_blob_talloc(vd, NULL, 4);
                if (composite_nomem(vd[0].data, c)) return;
 
-               SIVAL(vd[0].data, 0, DS_BEHAVIOR_WIN2008);
+               SIVAL(vd[0].data, 0, DS_DC_FUNCTION_2008_R2);
 
                vs[0].blob              = &vd[0];
 
@@ -2455,9 +2455,9 @@ static WERROR becomeDC_drsuapi_pull_partition_recv(struct libnet_BecomeDC_state
        uint32_t ctr_level = 0;
        struct drsuapi_DsGetNCChangesCtr1 *ctr1 = NULL;
        struct drsuapi_DsGetNCChangesCtr6 *ctr6 = NULL;
-       struct GUID *source_dsa_guid;
-       struct GUID *source_dsa_invocation_id;
-       struct drsuapi_DsReplicaHighWaterMark *new_highwatermark;
+       struct GUID *source_dsa_guid = NULL;
+       struct GUID *source_dsa_invocation_id = NULL;
+       struct drsuapi_DsReplicaHighWaterMark *new_highwatermark = NULL;
        bool more_data = false;
        NTSTATUS nt_status;
 
@@ -2767,8 +2767,12 @@ static void becomeDC_drsuapi_update_refs_send(struct libnet_BecomeDC_state *s,
        r->in.req.req1.dest_dsa_dns_name= ntds_dns_name;
        r->in.req.req1.dest_dsa_guid    = s->dest_dsa.ntds_guid;
        r->in.req.req1.options          = DRSUAPI_DS_REPLICA_UPDATE_ADD_REFERENCE
-                                       | DRSUAPI_DS_REPLICA_UPDATE_DELETE_REFERENCE
-                                       | DRSUAPI_DS_REPLICA_UPDATE_0x00000010;
+                                       | DRSUAPI_DS_REPLICA_UPDATE_DELETE_REFERENCE;
+
+       /* I think this is how we mark ourselves as a RODC */
+       if (!lp_parm_bool(s->libnet->lp_ctx, NULL, "repl", "RODC", false)) {
+               r->in.req.req1.options |= DRSUAPI_DS_REPLICA_UPDATE_WRITEABLE;
+       }
 
        req = dcerpc_drsuapi_DsReplicaUpdateRefs_send(drsuapi->pipe, r, r);
        composite_continue_rpc(c, req, recv_fn, s);