From 01de6030843f5f402dee8bf72f564a91ae8437ca Mon Sep 17 00:00:00 2001 From: Luke Leighton Date: Mon, 19 Oct 1998 17:32:10 +0000 Subject: - dce/rpc code - removed debug info in struni2 and unistr2 (security risk) - rpc_pipe function was getting pointer to data then calling realloc *dur* - password check function, the start of "credential checking", user, wks, domain, pass as the credentials (not just user,pass which is incorrect in a domain context) - cli_write needs to return ssize_t not size_t, because total can be -1 if the write fails. - fixed signed / unsigned warnings (how come i don't get those any more when i compile with gcc???) - nt password change added in smbd. yes, jeremy, i verified that the SMBtrans2 version still works. (This used to be commit fcfb40d2b0fc565ee4f66b3a3761c246366a2ef3) --- source3/rpc_parse/parse_rpc.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'source3/rpc_parse/parse_rpc.c') diff --git a/source3/rpc_parse/parse_rpc.c b/source3/rpc_parse/parse_rpc.c index f9745da4b4..44f95c7e0c 100644 --- a/source3/rpc_parse/parse_rpc.c +++ b/source3/rpc_parse/parse_rpc.c @@ -457,6 +457,14 @@ void smb_io_rpc_hdr_autha(char *desc, RPC_HDR_AUTHA *rai, prs_struct *ps, int de prs_uint32("unknown ", ps, depth, &(rai->unknown )); /* 0x0014a0c0 */ } +/******************************************************************* +checks an RPC_HDR_AUTH structure. +********************************************************************/ +BOOL rpc_hdr_auth_chk(RPC_HDR_AUTH *rai) +{ + return (rai->auth_type == 0x0a && rai->auth_level == 0x06); +} + /******************************************************************* creates an RPC_HDR_AUTH structure. ********************************************************************/ @@ -493,6 +501,15 @@ void smb_io_rpc_hdr_auth(char *desc, RPC_HDR_AUTH *rai, prs_struct *ps, int dept prs_uint32("unknown ", ps, depth, &(rai->unknown )); /* 0x0014a0c0 */ } +/******************************************************************* +checks an RPC_AUTH_VERIFIER structure. +********************************************************************/ +BOOL rpc_auth_verifier_chk(RPC_AUTH_VERIFIER *rav, + char *signature, uint32 msg_type) +{ + return (strequal(rav->signature, signature) && rav->msg_type == msg_type); +} + /******************************************************************* creates an RPC_AUTH_VERIFIER structure. ********************************************************************/ @@ -783,6 +800,30 @@ void smb_io_rpc_auth_ntlmssp_resp(char *desc, RPC_AUTH_NTLMSSP_RESP *rsp, prs_st } } +/******************************************************************* +checks an RPC_AUTH_NTLMSSP_CHK structure. +********************************************************************/ +BOOL rpc_auth_ntlmssp_chk(RPC_AUTH_NTLMSSP_CHK *chk, uint32 crc32, uint32 *seq_num) +{ + if (chk == NULL || seq_num == NULL) + { + return False; + } + + if (chk->crc32 != crc32 || + chk->ver != NTLMSSP_SIGN_VERSION || + chk->seq_num != (*seq_num)) + { + DEBUG(5,("verify failed - crc %x ver %x seq %d\n", + crc32, NTLMSSP_SIGN_VERSION, (*seq_num)-1)); + DEBUG(5,("verify expect - crc %x ver %x seq %d\n", + chk->crc32, chk->ver, chk->seq_num)); + return False; + } + (*seq_num)++; + return True; +} + /******************************************************************* creates an RPC_AUTH_NTLMSSP_CHK structure. ********************************************************************/ -- cgit