/* The following definitions come from rpc_parse/parse_rpc.c */
-const char *get_pipe_name_from_iface(const struct ndr_syntax_id *interface);
+const char *get_pipe_name_from_syntax(TALLOC_CTX *mem_ctx,
+ const struct ndr_syntax_id *interface);
void init_rpc_hdr(RPC_HDR *hdr, enum dcerpc_pkt_type pkt_type, uint8 flags,
uint32 call_id, int data_len, int auth_len);
bool smb_io_rpc_hdr(const char *desc, RPC_HDR *rpc, prs_struct *ps, int depth);
status = pipe_cm_open(ctx, cli, interface, &result);
if (!NT_STATUS_IS_OK(status)) {
libnetapi_set_error_string(ctx, "failed to open PIPE %s: %s",
- get_pipe_name_from_iface(interface),
+ get_pipe_name_from_syntax(talloc_tos(), interface),
get_friendly_nt_error_msg(status));
return WERR_DEST_NOT_FOUND;
}
Return the pipe name from the interface.
****************************************************************************/
-const char *get_pipe_name_from_iface(const struct ndr_syntax_id *interface)
+const char *get_pipe_name_from_syntax(TALLOC_CTX *mem_ctx,
+ const struct ndr_syntax_id *interface)
{
char *guid_str;
const char *result;
if (guid_str == NULL) {
return NULL;
}
- result = talloc_asprintf(talloc_tos(), "Interface %s.%d", guid_str,
+ result = talloc_asprintf(mem_ctx, "Interface %s.%d", guid_str,
(int)interface->if_version);
TALLOC_FREE(guid_str);
}
DEBUG(lvl, ("cli_rpc_pipe_open_noauth: rpc_pipe_bind for pipe "
"%s failed with error %s\n",
- get_pipe_name_from_iface(interface),
+ get_pipe_name_from_syntax(talloc_tos(), interface),
nt_errstr(status) ));
TALLOC_FREE(result);
return status;
DEBUG(10,("cli_rpc_pipe_open_noauth: opened pipe %s to machine "
"%s and bound anonymously.\n",
- get_pipe_name_from_iface(interface), cli->desthost));
+ get_pipe_name_from_syntax(talloc_tos(), interface),
+ cli->desthost));
*presult = result;
return NT_STATUS_OK;
DEBUG(10,("cli_rpc_pipe_open_ntlmssp_internal: opened pipe %s to "
"machine %s and bound NTLMSSP as user %s\\%s.\n",
- get_pipe_name_from_iface(interface), cli->desthost, domain,
- username ));
+ get_pipe_name_from_syntax(talloc_tos(), interface),
+ cli->desthost, domain, username ));
*presult = result;
return NT_STATUS_OK;
DEBUG(10,("cli_rpc_pipe_open_schannel_with_key: opened pipe %s to machine %s "
"for domain %s and bound using schannel.\n",
- get_pipe_name_from_iface(interface),
+ get_pipe_name_from_syntax(talloc_tos(), interface),
cli->desthost, domain ));
*presult = result;
}
state->transport->priv = state->transport_np;
- state->transport_np->pipe_name = get_pipe_name_from_iface(
- abstract_syntax);
+ state->transport_np->pipe_name = get_pipe_name_from_syntax(
+ state->transport_np, abstract_syntax);
state->transport_np->cli = cli;
subreq = cli_ntcreate_send(
ZERO_STRUCTP(hl);
DEBUG(10,("init_pipe_handles: created handle list for "
- "pipe %s\n", get_pipe_name_from_iface(syntax)));
+ "pipe %s\n",
+ get_pipe_name_from_syntax(talloc_tos(), syntax)));
}
/*
DEBUG(10,("init_pipe_handles: pipe_handles ref count = %lu for pipe %s\n",
(unsigned long)p->pipe_handles->pipe_ref_count,
- get_pipe_name_from_iface(syntax)));
+ get_pipe_name_from_syntax(talloc_tos(), syntax)));
return True;
}
SAFE_FREE(p->pipe_handles);
DEBUG(10,("close_policy_by_pipe: deleted handle list for "
- "pipe %s\n", get_pipe_name_from_iface(&p->syntax)));
+ "pipe %s\n",
+ get_pipe_name_from_syntax(talloc_tos(), &p->syntax)));
}
}
if (p->pipe_handles->count > MAX_OPEN_POLS) {
DEBUG(0, ("policy_handle_create: ERROR: too many handles (%d) "
"on pipe %s.\n", (int)p->pipe_handles->count,
- get_pipe_name_from_iface(&p->syntax)));
+ get_pipe_name_from_syntax(talloc_tos(), &p->syntax)));
*pstatus = NT_STATUS_INSUFFICIENT_RESOURCES;
return NULL;
}
bool ret;
DEBUG(5,("pipe_ntlmssp_verify_final: pipe %s checking user details\n",
- get_pipe_name_from_iface(&p->syntax)));
+ get_pipe_name_from_syntax(talloc_tos(), &p->syntax)));
ZERO_STRUCT(reply);
if (!(a->ntlmssp_state->neg_flags & NTLMSSP_NEGOTIATE_SIGN)) {
DEBUG(0,("pipe_ntlmssp_verify_final: pipe %s : packet integrity requested "
"but client declined signing.\n",
- get_pipe_name_from_iface(&p->syntax)));
+ get_pipe_name_from_syntax(talloc_tos(),
+ &p->syntax)));
return False;
}
}
if (!(a->ntlmssp_state->neg_flags & NTLMSSP_NEGOTIATE_SEAL)) {
DEBUG(0,("pipe_ntlmssp_verify_final: pipe %s : packet privacy requested "
"but client declined sealing.\n",
- get_pipe_name_from_iface(&p->syntax)));
+ get_pipe_name_from_syntax(talloc_tos(),
+ &p->syntax)));
return False;
}
}
struct pipe_rpc_fns *context_fns;
DEBUG(3,("check_bind_req for %s\n",
- get_pipe_name_from_iface(&p->syntax)));
+ get_pipe_name_from_syntax(talloc_tos(), &p->syntax)));
/* we have to check all now since win2k introduced a new UUID on the lsaprpc pipe */
/* No rebinds on a bound pipe - use alter context. */
if (p->pipe_bound) {
DEBUG(2,("api_pipe_bind_req: rejecting bind request on bound "
- "pipe %s.\n", get_pipe_name_from_iface(&p->syntax)));
+ "pipe %s.\n",
+ get_pipe_name_from_syntax(talloc_tos(), &p->syntax)));
return setup_bind_nak(p);
}
NTSTATUS status;
status = smb_probe_module(
- "rpc", get_pipe_name_from_iface(
+ "rpc", get_pipe_name_from_syntax(
+ talloc_tos(),
&hdr_rb.rpc_context[0].abstract));
if (NT_STATUS_IS_ERR(status)) {
DEBUG(3,("api_pipe_bind_req: Unknown pipe name %s in bind request.\n",
- get_pipe_name_from_iface(&hdr_rb.rpc_context[0].abstract)));
+ get_pipe_name_from_syntax(
+ talloc_tos(),
+ &hdr_rb.rpc_context[0].abstract)));
prs_mem_free(&p->out_data.frag);
prs_mem_free(&out_hdr_ba);
prs_mem_free(&out_auth);
for (i = 0; i < rpc_lookup_size; i++) {
if (strequal(rpc_lookup[i].pipe.clnt,
- get_pipe_name_from_iface(&p->syntax))) {
+ get_pipe_name_from_syntax(talloc_tos(),
+ &p->syntax))) {
DEBUG(3, ("api_pipe_bind_req: \\PIPE\\%s -> \\PIPE\\%s\n",
rpc_lookup[i].pipe.clnt, rpc_lookup[i].pipe.srv));
break;
if (i == rpc_lookup_size) {
DEBUG(0, ("module %s doesn't provide functions for "
"pipe %s!\n",
- get_pipe_name_from_iface(&p->syntax),
- get_pipe_name_from_iface(&p->syntax)));
+ get_pipe_name_from_syntax(talloc_tos(),
+ &p->syntax),
+ get_pipe_name_from_syntax(talloc_tos(),
+ &p->syntax)));
goto err_exit;
}
}
}
DEBUG(5, ("Requested \\PIPE\\%s\n",
- get_pipe_name_from_iface(&p->syntax)));
+ get_pipe_name_from_syntax(talloc_tos(), &p->syntax)));
/* get the set of RPC functions for this context */
else {
DEBUG(0,("api_pipe_request: No rpc function table associated with context [%d] on pipe [%s]\n",
p->hdr_req.context_id,
- get_pipe_name_from_iface(&p->syntax)));
+ get_pipe_name_from_syntax(talloc_tos(), &p->syntax)));
}
if (changed_user) {
/* interpret the command */
DEBUG(4,("api_rpcTNP: %s op 0x%x - ",
- get_pipe_name_from_iface(&p->syntax), p->hdr_req.opnum));
+ get_pipe_name_from_syntax(talloc_tos(), &p->syntax),
+ p->hdr_req.opnum));
if (DEBUGLEVEL >= 50) {
fstring name;
slprintf(name, sizeof(name)-1, "in_%s",
- get_pipe_name_from_iface(&p->syntax));
+ get_pipe_name_from_syntax(talloc_tos(), &p->syntax));
prs_dump(name, p->hdr_req.opnum, &p->in_data.data);
}
/* do the actual command */
if(!api_rpc_cmds[fn_num].fn(p)) {
DEBUG(0,("api_rpcTNP: %s: %s failed.\n",
- get_pipe_name_from_iface(&p->syntax),
+ get_pipe_name_from_syntax(talloc_tos(), &p->syntax),
api_rpc_cmds[fn_num].name));
prs_mem_free(&p->out_data.rdata);
return False;
if (DEBUGLEVEL >= 50) {
fstring name;
slprintf(name, sizeof(name)-1, "out_%s",
- get_pipe_name_from_iface(&p->syntax));
+ get_pipe_name_from_syntax(talloc_tos(), &p->syntax));
prs_dump(name, p->hdr_req.opnum, &p->out_data.rdata);
}
prs_set_offset(&p->out_data.rdata, offset2);
DEBUG(5,("api_rpcTNP: called %s successfully\n",
- get_pipe_name_from_iface(&p->syntax)));
+ get_pipe_name_from_syntax(talloc_tos(), &p->syntax)));
/* Check for buffer underflow in rpc parsing */
pipes_struct *p;
DEBUG(4,("Create pipe requested %s\n",
- get_pipe_name_from_iface(syntax)));
+ get_pipe_name_from_syntax(talloc_tos(), syntax)));
p = TALLOC_ZERO_P(mem_ctx, struct pipes_struct);
return NULL;
}
- if ((p->mem_ctx = talloc_init("pipe %s %p",
- get_pipe_name_from_iface(syntax),
- p)) == NULL) {
+ p->mem_ctx = talloc_init("pipe %s %p",
+ get_pipe_name_from_syntax(talloc_tos(),
+ syntax), p);
+ if (p->mem_ctx == NULL) {
DEBUG(0,("open_rpc_pipe_p: talloc_init failed.\n"));
TALLOC_FREE(p);
return NULL;
p->syntax = *syntax;
DEBUG(4,("Created internal pipe %s (pipes_open=%d)\n",
- get_pipe_name_from_iface(syntax), pipes_open));
+ get_pipe_name_from_syntax(talloc_tos(), syntax), pipes_open));
talloc_set_destructor(p, close_internal_rpc_pipe_hnd);
p->in_data.pdu_received_len = 0;
p->fault_state = True;
DEBUG(10, ("set_incoming_fault: Setting fault state on pipe %s\n",
- get_pipe_name_from_iface(&p->syntax)));
+ get_pipe_name_from_syntax(talloc_tos(), &p->syntax)));
}
/****************************************************************************
talloc_free_children(p->mem_ctx);
} else {
p->mem_ctx = talloc_init(
- "pipe %s %p", get_pipe_name_from_iface(&p->syntax), p);
+ "pipe %s %p", get_pipe_name_from_syntax(talloc_tos(),
+ &p->syntax),
+ p);
if (p->mem_ctx == NULL) {
p->fault_state = True;
}
if(p->fault_state) {
DEBUG(10,("process_complete_pdu: pipe %s in fault state.\n",
- get_pipe_name_from_iface(&p->syntax)));
+ get_pipe_name_from_syntax(talloc_tos(), &p->syntax)));
set_incoming_fault(p);
setup_fault_pdu(p, NT_STATUS(DCERPC_FAULT_OP_RNG_ERROR));
return;
case DCERPC_PKT_PING: /* CL request - ignore... */
DEBUG(0,("process_complete_pdu: Error. Connectionless packet type %u received on pipe %s.\n",
(unsigned int)p->hdr.pkt_type,
- get_pipe_name_from_iface(&p->syntax)));
+ get_pipe_name_from_syntax(talloc_tos(),
+ &p->syntax)));
break;
case DCERPC_PKT_RESPONSE: /* No responses here. */
DEBUG(0,("process_complete_pdu: Error. DCERPC_PKT_RESPONSE received from client on pipe %s.\n",
- get_pipe_name_from_iface(&p->syntax)));
+ get_pipe_name_from_syntax(talloc_tos(),
+ &p->syntax)));
break;
case DCERPC_PKT_FAULT:
case DCERPC_PKT_CANCEL_ACK:
DEBUG(0,("process_complete_pdu: Error. Connectionless packet type %u received on pipe %s.\n",
(unsigned int)p->hdr.pkt_type,
- get_pipe_name_from_iface(&p->syntax)));
+ get_pipe_name_from_syntax(talloc_tos(),
+ &p->syntax)));
break;
case DCERPC_PKT_BIND:
case DCERPC_PKT_BIND_NAK:
DEBUG(0,("process_complete_pdu: Error. DCERPC_PKT_BINDACK/DCERPC_PKT_BINDNACK packet type %u received on pipe %s.\n",
(unsigned int)p->hdr.pkt_type,
- get_pipe_name_from_iface(&p->syntax)));
+ get_pipe_name_from_syntax(talloc_tos(),
+ &p->syntax)));
break;
case DCERPC_PKT_ALTER_RESP:
DEBUG(0,("process_complete_pdu: Error. DCERPC_PKT_ALTER_RESP on pipe %s: Should only be server -> client.\n",
- get_pipe_name_from_iface(&p->syntax)));
+ get_pipe_name_from_syntax(talloc_tos(),
+ &p->syntax)));
break;
case DCERPC_PKT_AUTH3:
case DCERPC_PKT_SHUTDOWN:
DEBUG(0,("process_complete_pdu: Error. DCERPC_PKT_SHUTDOWN on pipe %s: Should only be server -> client.\n",
- get_pipe_name_from_iface(&p->syntax)));
+ get_pipe_name_from_syntax(talloc_tos(),
+ &p->syntax)));
break;
case DCERPC_PKT_CO_CANCEL:
if (!reply) {
DEBUG(3,("process_complete_pdu: DCE/RPC fault sent on "
- "pipe %s\n", get_pipe_name_from_iface(&p->syntax)));
+ "pipe %s\n", get_pipe_name_from_syntax(talloc_tos(),
+ &p->syntax)));
set_incoming_fault(p);
setup_fault_pdu(p, NT_STATUS(DCERPC_FAULT_OP_RNG_ERROR));
prs_mem_free(&rpc_in);
return -1;
}
- DEBUG(6,(" name: %s len: %u\n", get_pipe_name_from_iface(&p->syntax),
+ DEBUG(6,(" name: %s len: %u\n",
+ get_pipe_name_from_syntax(talloc_tos(), &p->syntax),
(unsigned int)n));
/*
if(n > RPC_MAX_PDU_FRAG_LEN) {
DEBUG(5,("read_from_pipe: too large read (%u) requested on "
"pipe %s. We can only service %d sized reads.\n",
- (unsigned int)n, get_pipe_name_from_iface(&p->syntax),
+ (unsigned int)n,
+ get_pipe_name_from_syntax(talloc_tos(), &p->syntax),
RPC_MAX_PDU_FRAG_LEN ));
n = RPC_MAX_PDU_FRAG_LEN;
}
DEBUG(10,("read_from_pipe: %s: current_pdu_len = %u, "
"current_pdu_sent = %u returning %d bytes.\n",
- get_pipe_name_from_iface(&p->syntax),
+ get_pipe_name_from_syntax(talloc_tos(), &p->syntax),
(unsigned int)prs_offset(&p->out_data.frag),
(unsigned int)p->out_data.current_pdu_sent,
(int)data_returned));
DEBUG(10,("read_from_pipe: %s: fault_state = %d : data_sent_length "
"= %u, prs_offset(&p->out_data.rdata) = %u.\n",
- get_pipe_name_from_iface(&p->syntax), (int)p->fault_state,
+ get_pipe_name_from_syntax(talloc_tos(), &p->syntax),
+ (int)p->fault_state,
(unsigned int)p->out_data.data_sent_length,
(unsigned int)prs_offset(&p->out_data.rdata) ));
if(!create_next_pdu(p)) {
DEBUG(0,("read_from_pipe: %s: create_next_pdu failed.\n",
- get_pipe_name_from_iface(&p->syntax)));
+ get_pipe_name_from_syntax(talloc_tos(), &p->syntax)));
return -1;
}
default:
DEBUG(0, ("Could not initialise %s. Invalid "
"auth type %u\n",
- get_pipe_name_from_iface(
+ get_pipe_name_from_syntax(
+ talloc_tos(),
cmd_entry->interface),
pipe_default_auth_type ));
return NT_STATUS_UNSUCCESSFUL;
}
if (!NT_STATUS_IS_OK(ntresult)) {
DEBUG(0, ("Could not initialise %s. Error was %s\n",
- get_pipe_name_from_iface(
- cmd_entry->interface),
+ get_pipe_name_from_syntax(
+ talloc_tos(), cmd_entry->interface),
nt_errstr(ntresult) ));
return ntresult;
}
if (!NT_STATUS_IS_OK(ntresult)) {
DEBUG(0, ("Could not initialise credentials for %s.\n",
- get_pipe_name_from_iface(
+ get_pipe_name_from_syntax(
+ talloc_tos(),
cmd_entry->interface)));
return ntresult;
}
}
if (!NT_STATUS_IS_OK(nt_status)) {
DEBUG(0, ("Could not initialise pipe %s. Error was %s\n",
- get_pipe_name_from_iface(interface),
+ get_pipe_name_from_syntax(
+ talloc_tos(), interface),
nt_errstr(nt_status) ));
goto fail;
}