diff options
author | Günther Deschner <gd@samba.org> | 2008-06-13 12:20:01 +0200 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2008-06-13 12:53:09 +0200 |
commit | f2042c94b8ab7fbbdaf7f7ca954a0b3e1b11b964 (patch) | |
tree | e9926e64298a45d712fbb57aa05d5fb68a689520 | |
parent | eae0effad439c1e3735e11261aee26d0a43c96ea (diff) | |
download | samba-f2042c94b8ab7fbbdaf7f7ca954a0b3e1b11b964.tar.gz |
net: Fix bug #5542 (samsync contains empty passwords).
Guenther
(cherry picked from commit 1a22e975dd1255f3557c1cd873d877aa35822afc)
-rw-r--r-- | source/utils/net.h | 1 | ||||
-rw-r--r-- | source/utils/net_ads.c | 2 | ||||
-rw-r--r-- | source/utils/net_rpc_samsync.c | 27 |
3 files changed, 28 insertions, 2 deletions
diff --git a/source/utils/net.h b/source/utils/net.h index 68ed179a7a3..f0436688ab3 100644 --- a/source/utils/net.h +++ b/source/utils/net.h @@ -23,6 +23,7 @@ */ #include "lib/netapi/netapi.h" +#include "libnet/libnet.h" typedef NTSTATUS (*rpc_command_fn)(const DOM_SID *, const char *, diff --git a/source/utils/net_ads.c b/source/utils/net_ads.c index 9c6a5481a1d..ef6b15122d6 100644 --- a/source/utils/net_ads.c +++ b/source/utils/net_ads.c @@ -23,8 +23,6 @@ #include "includes.h" #include "utils/net.h" -#include "libnet/libnet.h" - #ifdef HAVE_ADS int net_ads_usage(int argc, const char **argv) diff --git a/source/utils/net_rpc_samsync.c b/source/utils/net_rpc_samsync.c index 06cde2a3fdb..ac0739eecfb 100644 --- a/source/utils/net_rpc_samsync.c +++ b/source/utils/net_rpc_samsync.c @@ -336,6 +336,7 @@ static void dump_database(struct rpc_pipe_client *pipe_hnd, struct netr_Authenticator return_authenticator; uint16_t restart_state = 0; uint32_t sync_context = 0; + DATA_BLOB session_key; ZERO_STRUCT(return_authenticator); @@ -386,6 +387,14 @@ static void dump_database(struct rpc_pipe_client *pipe_hnd, break; } + session_key = data_blob_const(pipe_hnd->dc->sess_key, 16); + + samsync_fix_delta_array(mem_ctx, + &session_key, + true, + database_id, + delta_enum_array); + /* Display results */ for (i = 0; i < delta_enum_array->num_deltas; i++) { display_sam_entry(&delta_enum_array->delta_enum[i]); @@ -1197,6 +1206,7 @@ static NTSTATUS fetch_database(struct rpc_pipe_client *pipe_hnd, uint32 db_type, enum netr_SamDatabaseID database_id = db_type; uint16_t restart_state = 0; uint32_t sync_context = 0; + DATA_BLOB session_key; if (!(mem_ctx = talloc_init("fetch_database"))) return NT_STATUS_NO_MEMORY; @@ -1243,6 +1253,14 @@ static NTSTATUS fetch_database(struct rpc_pipe_client *pipe_hnd, uint32 db_type, break; } + session_key = data_blob_const(pipe_hnd->dc->sess_key, 16); + + samsync_fix_delta_array(mem_ctx, + &session_key, + true, + database_id, + delta_enum_array); + for (i = 0; i < delta_enum_array->num_deltas; i++) { fetch_sam_entry(&delta_enum_array->delta_enum[i], dom_sid); } @@ -2018,6 +2036,7 @@ static NTSTATUS fetch_database_to_ldif(struct rpc_pipe_client *pipe_hnd, enum netr_SamDatabaseID database_id = db_type; uint16_t restart_state = 0; uint32_t sync_context = 0; + DATA_BLOB session_key; /* Set up array for mapping accounts to groups */ /* Array element is the group rid */ @@ -2150,6 +2169,14 @@ static NTSTATUS fetch_database_to_ldif(struct rpc_pipe_client *pipe_hnd, break; } + session_key = data_blob_const(pipe_hnd->dc->sess_key, 16); + + samsync_fix_delta_array(mem_ctx, + &session_key, + true, + database_id, + delta_enum_array); + num_deltas = delta_enum_array->num_deltas; /* Re-allocate memory for groupmap and accountmap arrays */ |