From 01d451f9f1e3c9ba49a97b28b65a8a0ea912018a Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Fri, 18 May 2001 01:24:08 +0000 Subject: [PATCH] Fixed the w2ksp2 joining a domain bug. Jeremy. --- source/include/proto.h | 2 +- source/rpc_server/srv_pipe.c | 8 ++++---- source/rpc_server/srv_pipe_hnd.c | 4 ++-- source/rpc_server/srv_samr.c | 5 +++++ 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/source/include/proto.h b/source/include/proto.h index cf9653cfb31..c2bfd7097e3 100644 --- a/source/include/proto.h +++ b/source/include/proto.h @@ -3614,7 +3614,7 @@ uint32 _net_sam_logon(pipes_struct *p, NET_Q_SAM_LOGON *q_u, NET_R_SAM_LOGON *r_ BOOL create_next_pdu(pipes_struct *p); BOOL api_pipe_bind_auth_resp(pipes_struct *p, prs_struct *rpc_in_p); -BOOL setup_fault_pdu(pipes_struct *p); +BOOL setup_fault_pdu(pipes_struct *p, uint32 status); BOOL check_bind_req(char* pipe_name, RPC_IFACE* abstract, RPC_IFACE* transfer); BOOL api_pipe_bind_req(pipes_struct *p, prs_struct *rpc_in_p); diff --git a/source/rpc_server/srv_pipe.c b/source/rpc_server/srv_pipe.c index 07e4e73142e..d16290985ec 100644 --- a/source/rpc_server/srv_pipe.c +++ b/source/rpc_server/srv_pipe.c @@ -93,7 +93,7 @@ BOOL create_next_pdu(pipes_struct *p) */ if(p->fault_state) { - setup_fault_pdu(p); + setup_fault_pdu(p, 0x1c010002); return True; } @@ -626,7 +626,7 @@ static BOOL setup_bind_nak(pipes_struct *p) Marshall a fault pdu. *******************************************************************/ -BOOL setup_fault_pdu(pipes_struct *p) +BOOL setup_fault_pdu(pipes_struct *p, uint32 status) { prs_struct outgoing_pdu; RPC_HDR fault_hdr; @@ -658,7 +658,7 @@ BOOL setup_fault_pdu(pipes_struct *p) memset((char *)&hdr_resp, '\0', sizeof(hdr_resp)); - fault_resp.status = 0x1c010002; + fault_resp.status = status; fault_resp.reserved = 0; /* @@ -1204,7 +1204,7 @@ BOOL api_rpcTNP(pipes_struct *p, char *rpc_name, * and not put the pipe into fault state. JRA. */ DEBUG(4, ("unknown\n")); - setup_fault_pdu(p); + setup_fault_pdu(p, 0x1c010002); return True; } diff --git a/source/rpc_server/srv_pipe_hnd.c b/source/rpc_server/srv_pipe_hnd.c index 893bc8cb884..f91df7c4ef4 100644 --- a/source/rpc_server/srv_pipe_hnd.c +++ b/source/rpc_server/srv_pipe_hnd.c @@ -570,7 +570,7 @@ static ssize_t process_complete_pdu(pipes_struct *p) DEBUG(10,("process_complete_pdu: pipe %s in fault state.\n", p->name )); set_incoming_fault(p); - setup_fault_pdu(p); + setup_fault_pdu(p, 0x1c010002); return (ssize_t)data_len; } @@ -619,7 +619,7 @@ static ssize_t process_complete_pdu(pipes_struct *p) if (!reply) { DEBUG(3,("process_complete_pdu: DCE/RPC fault sent on pipe %s\n", p->pipe_srv_name)); set_incoming_fault(p); - setup_fault_pdu(p); + setup_fault_pdu(p, 0x1c010002); prs_mem_free(&rpc_in); } else { /* diff --git a/source/rpc_server/srv_samr.c b/source/rpc_server/srv_samr.c index 63150573139..cd1cc6926fc 100644 --- a/source/rpc_server/srv_samr.c +++ b/source/rpc_server/srv_samr.c @@ -670,6 +670,11 @@ static BOOL api_samr_set_userinfo(pipes_struct *p) if (!samr_io_q_set_userinfo("", &q_u, data, 0)) { DEBUG(0,("api_samr_set_userinfo: Unable to unmarshall SAMR_Q_SET_USERINFO.\n")); + /* Fix for W2K SP2 */ + if (q_u.switch_value == 0x1a) { + setup_fault_pdu(p, 0x1c000006); + return True; + } return False; } -- 2.11.4.GIT