case PIPE_AUTH_LEVEL_CONNECT:
/* This is incorrect for auth level connect. Fixme. JRA */
return create_next_pdu_noauth(p);
-
+
default:
switch(p->auth.auth_type) {
case PIPE_AUTH_TYPE_NTLMSSP:
* The following call actually checks the challenge/response data.
* for correctness against the given DOMAIN\user name.
*/
-
+
if (!pipe_ntlmssp_verify_final(p, &blob)) {
goto err;
}
} else {
rpc_lookup = rpc_entry;
}
-
+
rpc_entry = rpc_lookup + (rpc_lookup_size - 1);
ZERO_STRUCTP(rpc_entry);
rpc_entry->pipe.clnt = SMB_STRDUP(clnt);
rpc_entry->rpc_interface = *interface;
rpc_entry->cmds = cmds;
rpc_entry->n_cmds = size;
-
+
return NT_STATUS_OK;
}
unsigned char *full_packet_data = NULL;
size_t full_packet_data_len;
DATA_BLOB auth_blob;
-
+
*pstatus = NT_STATUS_OK;
if (p->auth.auth_level == PIPE_AUTH_LEVEL_NONE || p->auth.auth_level == PIPE_AUTH_LEVEL_CONNECT) {
auth_blob.data = (unsigned char *)prs_data_p(rpc_in) + prs_offset(rpc_in);
auth_blob.length = auth_len;
-
+
switch (p->auth.auth_level) {
case PIPE_AUTH_LEVEL_PRIVACY:
/* Data is encrypted. */
data_len = p->hdr.frag_len - RPC_HEADER_LEN - RPC_HDR_REQ_LEN -
RPC_HDR_AUTH_LEN - auth_len;
-
+
DEBUG(5,("data %d auth %d\n", data_len, auth_len));
if(!prs_set_offset(rpc_in, RPC_HDR_REQ_LEN + data_len)) {
{
PIPE_RPC_FNS *fns = NULL;
PIPE_RPC_FNS *tmp = NULL;
-
+
if ( !list ) {
DEBUG(0,("find_pipe_fns_by_context: ERROR! No context list for pipe!\n"));
return NULL;
}
-
+
for (tmp=list; tmp; tmp=tmp->next ) {
if ( tmp->context_id == context_id )
break;
}
-
+
fns = tmp;
-
+
return fns;
}
{
PIPE_RPC_FNS *tmp = list;
PIPE_RPC_FNS *tmp2;
-
+
while (tmp) {
tmp2 = tmp->next;
SAFE_FREE(tmp);
bool ret = False;
bool changed_user = False;
PIPE_RPC_FNS *pipe_fns;
-
+
if (p->pipe_bound &&
((p->auth.auth_type == PIPE_AUTH_TYPE_NTLMSSP) ||
(p->auth.auth_type == PIPE_AUTH_TYPE_SPNEGO_NTLMSSP))) {
}
DEBUG(5, ("Requested \\PIPE\\%s\n", p->name));
-
+
/* get the set of RPC functions for this context */
-
+
pipe_fns = find_pipe_fns_by_context(p->contexts, p->hdr_req.context_id);
-
+
if ( pipe_fns ) {
TALLOC_CTX *frame = talloc_stackframe();
ret = api_rpcTNP(p, p->name, pipe_fns->cmds, pipe_fns->n_cmds);
int fn_num;
fstring name;
uint32 offset1, offset2;
-
+
/* interpret the command */
DEBUG(4,("api_rpcTNP: %s op 0x%x - ", rpc_name, p->hdr_req.opnum));