--- samba.orig/source/rpc_client/cli_netlogon.c 2008-05-07 11:58:21.000000000 +0200 +++ samba/source/rpc_client/cli_netlogon.c 2008-05-30 14:29:15.000000000 +0200 @@ -424,8 +424,6 @@ union netr_Validation validation; struct netr_ChallengeResponse lm; struct netr_ChallengeResponse nt; - struct netr_UserSessionKey user_session_key; - struct netr_LMSessionKey lmsesskey; *info3 = NULL; @@ -500,15 +498,14 @@ return result; } - user_session_key = validation.sam3->base.key; - lmsesskey = validation.sam3->base.LMSessKey; - - if (memcmp(zeros, user_session_key.key, 16) != 0) { - SamOEMhash(user_session_key.key, cli->dc->sess_key, 16); + *info3 = validation.sam3; + + if (memcmp(zeros, (*info3)->base.key.key, 16) != 0) { + SamOEMhash((*info3)->base.key.key, cli->dc->sess_key, 16); } - if (memcmp(zeros, lmsesskey.key, 8) != 0) { - SamOEMhash(lmsesskey.key, cli->dc->sess_key, 8); + if (memcmp(zeros, (*info3)->base.LMSessKey.key, 8) != 0) { + SamOEMhash((*info3)->base.LMSessKey.key, cli->dc->sess_key, 8); } if (memcmp(zeros, ret_creds.cred.data, sizeof(ret_creds.cred.data)) != 0) { @@ -519,8 +516,6 @@ } } - *info3 = validation.sam3; - return result; } @@ -537,7 +532,7 @@ struct netr_SamInfo3 **info3) { NTSTATUS result = NT_STATUS_UNSUCCESSFUL; - int validation_level = 3; + int validation_level = 3; /* #f# == NetLogonValidationSamInfo2 */ const char *workstation_name_slash; const char *server_name_slash; uint8 zeros[16]; @@ -547,8 +542,6 @@ union netr_Validation validation; struct netr_ChallengeResponse lm; struct netr_ChallengeResponse nt; - struct netr_UserSessionKey user_session_key; - struct netr_LMSessionKey lmsesskey; uint32_t flags = 0; *info3 = NULL; @@ -620,18 +613,16 @@ return result; } - user_session_key = validation.sam3->base.key; - lmsesskey = validation.sam3->base.LMSessKey; + *info3 = validation.sam3; - if (memcmp(zeros, user_session_key.key, 16) != 0) { - SamOEMhash(user_session_key.key, cli->dc->sess_key, 16); + if (memcmp(zeros, (*info3)->base.key.key, 16) != 0) { + SamOEMhash((*info3)->base.key.key, cli->dc->sess_key, 16); } - if (memcmp(zeros, lmsesskey.key, 8) != 0) { - SamOEMhash(lmsesskey.key, cli->dc->sess_key, 8); + if (memcmp(zeros, (*info3)->base.LMSessKey.key, 8) != 0) { + SamOEMhash((*info3)->base.LMSessKey.key, cli->dc->sess_key, 8); } - *info3 = validation.sam3; return result; }