summaryrefslogtreecommitdiff
path: root/source3/rpc_client/init_netlogon.c
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2008-11-06 10:19:20 +0100
committerStefan Metzmacher <metze@samba.org>2008-11-06 21:39:14 +0100
commit6815fd173077b02a80674a942225bd7cad6112c7 (patch)
tree3bc8f01184886efd12374ff439fc0e43c173a9ff /source3/rpc_client/init_netlogon.c
parent9666582b50b18e81816fcf8a0a17c343ea277801 (diff)
downloadsamba-6815fd173077b02a80674a942225bd7cad6112c7.tar.gz
samba-6815fd173077b02a80674a942225bd7cad6112c7.tar.bz2
samba-6815fd173077b02a80674a942225bd7cad6112c7.zip
s3: rpc: let serverinfo_to_SamInfo3() work with no pipe_session_key
metze
Diffstat (limited to 'source3/rpc_client/init_netlogon.c')
-rw-r--r--source3/rpc_client/init_netlogon.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/source3/rpc_client/init_netlogon.c b/source3/rpc_client/init_netlogon.c
index e4c39e739e..4318a94076 100644
--- a/source3/rpc_client/init_netlogon.c
+++ b/source3/rpc_client/init_netlogon.c
@@ -172,7 +172,8 @@ static NTSTATUS nt_token_to_group_list(TALLOC_CTX *mem_ctx,
*****************************************************************************/
NTSTATUS serverinfo_to_SamInfo3(struct auth_serversupplied_info *server_info,
- uint8_t pipe_session_key[16],
+ uint8_t *pipe_session_key,
+ size_t pipe_session_key_len,
struct netr_SamInfo3 *sam3)
{
struct samu *sampw;
@@ -203,6 +204,13 @@ NTSTATUS serverinfo_to_SamInfo3(struct auth_serversupplied_info *server_info,
user_sid = pdb_get_user_sid(sampw);
group_sid = pdb_get_group_sid(sampw);
+ if (pipe_session_key && pipe_session_key_len != 16) {
+ DEBUG(0,("serverinfo_to_SamInfo3: invalid "
+ "pipe_session_key_len[%u] != 16\n",
+ pipe_session_key_len));
+ return NT_STATUS_INTERNAL_ERROR;
+ }
+
if ((user_sid == NULL) || (group_sid == NULL)) {
DEBUG(1, ("_netr_LogonSamLogon: User without group or user SID\n"));
return NT_STATUS_UNSUCCESSFUL;
@@ -248,14 +256,18 @@ NTSTATUS serverinfo_to_SamInfo3(struct auth_serversupplied_info *server_info,
server_info->user_session_key.data,
MIN(sizeof(user_session_key.key),
server_info->user_session_key.length));
- SamOEMhash(user_session_key.key, pipe_session_key, 16);
+ if (pipe_session_key) {
+ SamOEMhash(user_session_key.key, pipe_session_key, 16);
+ }
}
if (server_info->lm_session_key.length) {
memcpy(lm_session_key.key,
server_info->lm_session_key.data,
MIN(sizeof(lm_session_key.key),
server_info->lm_session_key.length));
- SamOEMhash(lm_session_key.key, pipe_session_key, 8);
+ if (pipe_session_key) {
+ SamOEMhash(lm_session_key.key, pipe_session_key, 8);
+ }
}
groups.count = num_gids;