mirror of
https://github.com/samba-team/samba.git
synced 2024-12-23 17:34:34 +03:00
Refactoring: Change calling conventions for cli_rpc_pipe_open_noauth
Pass in ndr_syntax_id instead of pipe_idx, return NTSTATUS
This commit is contained in:
parent
6c122457ff
commit
9abc9dc4dc
@ -112,10 +112,11 @@ static NTSTATUS connect_to_domain_password_server(struct cli_state **cli,
|
||||
netlogon_pipe = cli_rpc_pipe_open_schannel(*cli, PI_NETLOGON,
|
||||
PIPE_AUTH_LEVEL_PRIVACY, domain, &result);
|
||||
} else {
|
||||
netlogon_pipe = cli_rpc_pipe_open_noauth(*cli, PI_NETLOGON, &result);
|
||||
result = cli_rpc_pipe_open_noauth(
|
||||
*cli, &ndr_table_netlogon.syntax_id, &netlogon_pipe);
|
||||
}
|
||||
|
||||
if(!netlogon_pipe) {
|
||||
if (!NT_STATUS_IS_OK(result)) {
|
||||
DEBUG(0,("connect_to_domain_password_server: unable to open the domain client session to \
|
||||
machine %s. Error was : %s.\n", dc_name, nt_errstr(result)));
|
||||
cli_shutdown(*cli);
|
||||
|
@ -3634,9 +3634,10 @@ static bool browse_host_rpc(bool sort)
|
||||
uint32_t total_entries = 0;
|
||||
int i;
|
||||
|
||||
pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_SRVSVC, &status);
|
||||
status = cli_rpc_pipe_open_noauth(cli, &ndr_table_srvsvc.syntax_id,
|
||||
&pipe_hnd);
|
||||
|
||||
if (pipe_hnd == NULL) {
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
DEBUG(10, ("Could not connect to srvsvc pipe: %s\n",
|
||||
nt_errstr(status)));
|
||||
TALLOC_FREE(frame);
|
||||
|
@ -7101,7 +7101,9 @@ NTSTATUS rpc_pipe_open_tcp(TALLOC_CTX *mem_ctx, const char *host,
|
||||
NTSTATUS rpc_pipe_open_ncalrpc(TALLOC_CTX *mem_ctx, const char *socket_path,
|
||||
const struct ndr_syntax_id *abstract_syntax,
|
||||
struct rpc_pipe_client **presult);
|
||||
struct rpc_pipe_client *cli_rpc_pipe_open_noauth(struct cli_state *cli, int pipe_idx, NTSTATUS *perr);
|
||||
NTSTATUS cli_rpc_pipe_open_noauth(struct cli_state *cli,
|
||||
const struct ndr_syntax_id *interface,
|
||||
struct rpc_pipe_client **presult);
|
||||
struct rpc_pipe_client *cli_rpc_pipe_open_ntlmssp(struct cli_state *cli,
|
||||
int pipe_idx,
|
||||
enum pipe_auth_level auth_level,
|
||||
@ -7910,6 +7912,7 @@ bool prs_data_blob(prs_struct *prs, DATA_BLOB *blob, TALLOC_CTX *mem_ctx);
|
||||
|
||||
const char *cli_get_pipe_name(int pipe_idx);
|
||||
int cli_get_pipe_idx(const RPC_IFACE *syntax);
|
||||
const struct ndr_syntax_id *cli_get_iface(int pipe_idx);
|
||||
void init_rpc_hdr(RPC_HDR *hdr, enum RPC_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);
|
||||
|
@ -159,6 +159,8 @@ enum schannel_direction {
|
||||
/* RPC_IFACE */
|
||||
typedef struct ndr_syntax_id RPC_IFACE;
|
||||
|
||||
extern const struct ndr_syntax_id syntax_spoolss;
|
||||
|
||||
#define RPC_IFACE_LEN (UUID_SIZE + 4)
|
||||
|
||||
/* RPC_HDR - dce rpc header */
|
||||
|
@ -132,8 +132,9 @@ static struct rpc_pipe_client *pipe_cm_connect(TALLOC_CTX *mem_ctx,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
p->pipe = cli_rpc_pipe_open_noauth(cli, pipe_idx, status);
|
||||
if (!p->pipe) {
|
||||
*status = cli_rpc_pipe_open_noauth(cli, cli_get_iface(pipe_idx),
|
||||
&p->pipe);
|
||||
if (!NT_STATUS_IS_OK(*status)) {
|
||||
TALLOC_FREE(p);
|
||||
return NULL;
|
||||
}
|
||||
|
@ -668,8 +668,9 @@ static NTSTATUS libnet_join_lookup_dc_rpc(TALLOC_CTX *mem_ctx,
|
||||
goto done;
|
||||
}
|
||||
|
||||
pipe_hnd = cli_rpc_pipe_open_noauth(*cli, PI_LSARPC, &status);
|
||||
if (!pipe_hnd) {
|
||||
status = cli_rpc_pipe_open_noauth(*cli, &ndr_table_lsarpc.syntax_id,
|
||||
&pipe_hnd);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
DEBUG(0,("Error connecting to LSA pipe. Error was %s\n",
|
||||
nt_errstr(status)));
|
||||
goto done;
|
||||
@ -750,8 +751,9 @@ static NTSTATUS libnet_join_joindomain_rpc(TALLOC_CTX *mem_ctx,
|
||||
|
||||
/* Open the domain */
|
||||
|
||||
pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_SAMR, &status);
|
||||
if (!pipe_hnd) {
|
||||
status = cli_rpc_pipe_open_noauth(cli, &ndr_table_samr.syntax_id,
|
||||
&pipe_hnd);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
DEBUG(0,("Error connecting to SAM pipe. Error was %s\n",
|
||||
nt_errstr(status)));
|
||||
goto done;
|
||||
@ -1136,8 +1138,9 @@ static NTSTATUS libnet_join_unjoindomain_rpc(TALLOC_CTX *mem_ctx,
|
||||
|
||||
/* Open the domain */
|
||||
|
||||
pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_SAMR, &status);
|
||||
if (!pipe_hnd) {
|
||||
status = cli_rpc_pipe_open_noauth(cli, &ndr_table_samr.syntax_id,
|
||||
&pipe_hnd);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
DEBUG(0,("Error connecting to SAM pipe. Error was %s\n",
|
||||
nt_errstr(status)));
|
||||
goto done;
|
||||
|
@ -131,7 +131,6 @@ _PUBLIC_ NTSTATUS dcerpc_pipe_connect(TALLOC_CTX *parent_ctx, struct dcerpc_pipe
|
||||
struct dcerpc_pipe *p = talloc(parent_ctx, struct dcerpc_pipe);
|
||||
struct dcerpc_binding *binding;
|
||||
NTSTATUS nt_status;
|
||||
int idx;
|
||||
|
||||
nt_status = dcerpc_parse_binding(p, binding_string, &binding);
|
||||
|
||||
@ -165,16 +164,10 @@ _PUBLIC_ NTSTATUS dcerpc_pipe_connect(TALLOC_CTX *parent_ctx, struct dcerpc_pipe
|
||||
return nt_status;
|
||||
}
|
||||
|
||||
idx = cli_get_pipe_idx(&table->syntax_id);
|
||||
if (idx < 0) {
|
||||
DEBUG(0, ("Unable to find interface index"));
|
||||
talloc_free(p);
|
||||
return NT_STATUS_OBJECT_PATH_INVALID;
|
||||
}
|
||||
nt_status = cli_rpc_pipe_open_noauth(p->cli, &table->syntax_id,
|
||||
&p->rpc_cli);
|
||||
|
||||
p->rpc_cli = cli_rpc_pipe_open_noauth(p->cli, idx, &nt_status);
|
||||
|
||||
if (p->rpc_cli == NULL) {
|
||||
if (!NT_STATUS_IS_OK(nt_status)) {
|
||||
talloc_free(p);
|
||||
return nt_status;
|
||||
}
|
||||
|
@ -273,8 +273,9 @@ net_share_enum_rpc(struct cli_state *cli,
|
||||
uint32_t total_entries = 0;
|
||||
|
||||
/* Open the server service pipe */
|
||||
pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_SRVSVC, &nt_status);
|
||||
if (!pipe_hnd) {
|
||||
nt_status = cli_rpc_pipe_open_noauth(cli, &ndr_table_srvsvc.syntax_id,
|
||||
&pipe_hnd);
|
||||
if (!NT_STATUS_IS_OK(nt_status)) {
|
||||
DEBUG(1, ("net_share_enum_rpc pipe open fail!\n"));
|
||||
return -1;
|
||||
}
|
||||
|
@ -646,10 +646,9 @@ SMBC_attr_server(TALLOC_CTX *ctx,
|
||||
ZERO_STRUCTP(ipc_srv);
|
||||
ipc_srv->cli = ipc_cli;
|
||||
|
||||
pipe_hnd = cli_rpc_pipe_open_noauth(ipc_srv->cli,
|
||||
PI_LSARPC,
|
||||
&nt_status);
|
||||
if (!pipe_hnd) {
|
||||
nt_status = cli_rpc_pipe_open_noauth(
|
||||
ipc_srv->cli, &ndr_table_lsarpc.syntax_id, &pipe_hnd);
|
||||
if (!NT_STATUS_IS_OK(nt_status)) {
|
||||
DEBUG(1, ("cli_nt_session_open fail!\n"));
|
||||
errno = ENOTSUP;
|
||||
cli_shutdown(ipc_srv->cli);
|
||||
|
@ -152,10 +152,11 @@ NTSTATUS remote_password_change(const char *remote_machine, const char *user_nam
|
||||
* will just fail. So we do it anonymously, there's no other
|
||||
* way.
|
||||
*/
|
||||
pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_SAMR, &result);
|
||||
result = cli_rpc_pipe_open_noauth(
|
||||
cli, &ndr_table_samr.syntax_id, &pipe_hnd);
|
||||
}
|
||||
|
||||
if (!pipe_hnd) {
|
||||
if (!NT_STATUS_IS_OK(result)) {
|
||||
if (lp_client_lanman_auth()) {
|
||||
/* Use the old RAP method. */
|
||||
if (!cli_oem_change_password(cli, user_name, new_passwd, old_passwd)) {
|
||||
@ -204,9 +205,10 @@ NTSTATUS remote_password_change(const char *remote_machine, const char *user_nam
|
||||
result = NT_STATUS_UNSUCCESSFUL;
|
||||
|
||||
/* OK, this is ugly, but... try an anonymous pipe. */
|
||||
pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_SAMR, &result);
|
||||
result = cli_rpc_pipe_open_noauth(cli, &ndr_table_samr.syntax_id,
|
||||
&pipe_hnd);
|
||||
|
||||
if ( pipe_hnd &&
|
||||
if ( NT_STATUS_IS_OK(result) &&
|
||||
(NT_STATUS_IS_OK(result = rpccli_samr_chgpasswd_user2(
|
||||
pipe_hnd, talloc_tos(), user_name,
|
||||
new_passwd, old_passwd)))) {
|
||||
|
@ -201,8 +201,9 @@ bool enumerate_domain_trusts( TALLOC_CTX *mem_ctx, const char *domain,
|
||||
|
||||
/* open the LSARPC_PIPE */
|
||||
|
||||
lsa_pipe = cli_rpc_pipe_open_noauth( cli, PI_LSARPC, &result );
|
||||
if ( !lsa_pipe) {
|
||||
result = cli_rpc_pipe_open_noauth(cli, &ndr_table_lsarpc.syntax_id,
|
||||
&lsa_pipe);
|
||||
if (!NT_STATUS_IS_OK(result)) {
|
||||
goto done;
|
||||
}
|
||||
|
||||
|
@ -27,15 +27,6 @@
|
||||
interface/version dce/rpc pipe identification
|
||||
********************************************************************/
|
||||
|
||||
static const struct ndr_syntax_id syntax_spoolss = {
|
||||
{
|
||||
0x12345678, 0x1234, 0xabcd,
|
||||
{ 0xef, 0x00 },
|
||||
{ 0x01, 0x23,
|
||||
0x45, 0x67, 0x89, 0xab }
|
||||
}, 0x01
|
||||
};
|
||||
|
||||
#define PIPE_SRVSVC "\\PIPE\\srvsvc"
|
||||
#define PIPE_SAMR "\\PIPE\\samr"
|
||||
#define PIPE_WINREG "\\PIPE\\winreg"
|
||||
@ -130,6 +121,15 @@ int cli_get_pipe_idx(const RPC_IFACE *syntax)
|
||||
return -1;
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
LEGACY function to ease transition from pipe_idx to interface
|
||||
********************************************************************/
|
||||
const struct ndr_syntax_id *cli_get_iface(int pipe_idx)
|
||||
{
|
||||
SMB_ASSERT((pipe_idx >= 0) && (pipe_idx < PI_MAX_PIPES));
|
||||
return pipe_names[pipe_idx].abstr_syntax;
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
Map internal value to wire value.
|
||||
********************************************************************/
|
||||
@ -2985,23 +2985,25 @@ static NTSTATUS cli_rpc_pipe_open(struct cli_state *cli,
|
||||
Open a named pipe to an SMB server and bind anonymously.
|
||||
****************************************************************************/
|
||||
|
||||
struct rpc_pipe_client *cli_rpc_pipe_open_noauth(struct cli_state *cli, int pipe_idx, NTSTATUS *perr)
|
||||
NTSTATUS cli_rpc_pipe_open_noauth(struct cli_state *cli,
|
||||
const struct ndr_syntax_id *interface,
|
||||
struct rpc_pipe_client **presult)
|
||||
{
|
||||
struct rpc_pipe_client *result;
|
||||
struct cli_pipe_auth_data *auth;
|
||||
NTSTATUS status;
|
||||
|
||||
*perr = cli_rpc_pipe_open(cli, pipe_names[pipe_idx].abstr_syntax,
|
||||
&result);
|
||||
if (!NT_STATUS_IS_OK(*perr)) {
|
||||
return NULL;
|
||||
status = cli_rpc_pipe_open(cli, interface, &result);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
return status;
|
||||
}
|
||||
|
||||
*perr = rpccli_anon_bind_data(result, &auth);
|
||||
if (!NT_STATUS_IS_OK(*perr)) {
|
||||
status = rpccli_anon_bind_data(result, &auth);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
DEBUG(0, ("rpccli_anon_bind_data returned %s\n",
|
||||
nt_errstr(*perr)));
|
||||
nt_errstr(status)));
|
||||
TALLOC_FREE(result);
|
||||
return NULL;
|
||||
return status;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -3017,30 +3019,34 @@ struct rpc_pipe_client *cli_rpc_pipe_open_noauth(struct cli_state *cli, int pipe
|
||||
auth->domain = talloc_strdup(auth, cli->domain);
|
||||
|
||||
if ((auth->user_name == NULL) || (auth->domain == NULL)) {
|
||||
*perr = NT_STATUS_NO_MEMORY;
|
||||
TALLOC_FREE(result);
|
||||
return NULL;
|
||||
return NT_STATUS_NO_MEMORY;
|
||||
}
|
||||
|
||||
*perr = rpc_pipe_bind(result, auth);
|
||||
if (!NT_STATUS_IS_OK(*perr)) {
|
||||
status = rpc_pipe_bind(result, auth);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
int lvl = 0;
|
||||
if (rpccli_is_pipe_idx(result, PI_DSSETUP)) {
|
||||
if (ndr_syntax_id_equal(interface,
|
||||
&ndr_table_dssetup.syntax_id)) {
|
||||
/* non AD domains just don't have this pipe, avoid
|
||||
* level 0 statement in that case - gd */
|
||||
lvl = 3;
|
||||
}
|
||||
DEBUG(lvl, ("cli_rpc_pipe_open_noauth: rpc_pipe_bind for pipe %s failed with error %s\n",
|
||||
cli_get_pipe_name(pipe_idx), nt_errstr(*perr) ));
|
||||
DEBUG(lvl, ("cli_rpc_pipe_open_noauth: rpc_pipe_bind for pipe "
|
||||
"%s failed with error %s\n",
|
||||
cli_get_pipe_name_from_iface(debug_ctx(), cli,
|
||||
interface),
|
||||
nt_errstr(status) ));
|
||||
TALLOC_FREE(result);
|
||||
return NULL;
|
||||
return status;
|
||||
}
|
||||
|
||||
DEBUG(10,("cli_rpc_pipe_open_noauth: opened pipe %s to machine "
|
||||
"%s and bound anonymously.\n", result->trans.np.pipe_name,
|
||||
cli->desthost ));
|
||||
|
||||
return result;
|
||||
*presult = result;
|
||||
return NT_STATUS_OK;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
@ -3204,8 +3210,9 @@ struct rpc_pipe_client *get_schannel_session_key(struct cli_state *cli,
|
||||
{
|
||||
struct rpc_pipe_client *netlogon_pipe = NULL;
|
||||
|
||||
netlogon_pipe = cli_rpc_pipe_open_noauth(cli, PI_NETLOGON, perr);
|
||||
if (!netlogon_pipe) {
|
||||
*perr = cli_rpc_pipe_open_noauth(cli, &ndr_table_netlogon.syntax_id,
|
||||
&netlogon_pipe);
|
||||
if (!NT_STATUS_IS_OK(*perr)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -639,3 +639,13 @@ bool smb_io_rpc_auth_schannel_chk(const char *desc, int auth_len,
|
||||
|
||||
return True;
|
||||
}
|
||||
|
||||
const struct ndr_syntax_id syntax_spoolss = {
|
||||
{
|
||||
0x12345678, 0x1234, 0xabcd,
|
||||
{ 0xef, 0x00 },
|
||||
{ 0x01, 0x23,
|
||||
0x45, 0x67, 0x89, 0xab }
|
||||
}, 0x01
|
||||
};
|
||||
|
||||
|
@ -7724,4 +7724,3 @@ bool convert_port_data_1( NT_PORT_DATA_1 *port1, RPC_BUFFER *buf )
|
||||
|
||||
return True;
|
||||
}
|
||||
|
||||
|
@ -1630,15 +1630,6 @@ void spoolss_get_pipe_fns( struct api_struct **fns, int *n_fns )
|
||||
*n_fns = sizeof(api_spoolss_cmds) / sizeof(struct api_struct);
|
||||
}
|
||||
|
||||
static const struct ndr_syntax_id syntax_spoolss = {
|
||||
{
|
||||
0x12345678, 0x1234, 0xabcd,
|
||||
{ 0xef, 0x00 },
|
||||
{ 0x01, 0x23,
|
||||
0x45, 0x67, 0x89, 0xab }
|
||||
}, 0x01
|
||||
};
|
||||
|
||||
NTSTATUS rpc_spoolss_init(void)
|
||||
{
|
||||
return rpc_pipe_register_commands(SMB_RPC_INTERFACE_VERSION,
|
||||
|
@ -2617,7 +2617,8 @@ static bool spoolss_connect_to_client(struct rpc_pipe_client **pp_pipe,
|
||||
* Now start the NT Domain stuff :-).
|
||||
*/
|
||||
|
||||
if ( !(*pp_pipe = cli_rpc_pipe_open_noauth(the_cli, PI_SPOOLSS, &ret)) ) {
|
||||
ret = cli_rpc_pipe_open_noauth(the_cli, &syntax_spoolss, pp_pipe);
|
||||
if (!NT_STATUS_IS_OK(ret)) {
|
||||
DEBUG(2,("spoolss_connect_to_client: unable to open the spoolss pipe on machine %s. Error was : %s.\n",
|
||||
remote_machine, nt_errstr(ret)));
|
||||
cli_shutdown(the_cli);
|
||||
|
@ -2680,8 +2680,9 @@ static WERROR cmd_spoolss_printercmp(struct rpc_pipe_client *cli,
|
||||
if ( !NT_STATUS_IS_OK(nt_status) )
|
||||
return WERR_GENERAL_FAILURE;
|
||||
|
||||
cli2 = cli_rpc_pipe_open_noauth(cli_server2, PI_SPOOLSS, &nt_status);
|
||||
if (!cli2) {
|
||||
nt_status = cli_rpc_pipe_open_noauth(cli_server2, &syntax_spoolss,
|
||||
&cli2);
|
||||
if (!NT_STATUS_IS_OK(nt_status)) {
|
||||
printf("failed to open spoolss pipe on server %s (%s)\n",
|
||||
servername2, nt_errstr(nt_status));
|
||||
return WERR_GENERAL_FAILURE;
|
||||
|
@ -30,13 +30,19 @@ static NTSTATUS cmd_testme(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
|
||||
|
||||
d_printf("testme\n");
|
||||
|
||||
lsa_pipe = cli_rpc_pipe_open_noauth(rpc_pipe_np_smb_conn(cli),
|
||||
PI_LSARPC, &status);
|
||||
if (lsa_pipe == NULL) goto done;
|
||||
status = cli_rpc_pipe_open_noauth(rpc_pipe_np_smb_conn(cli),
|
||||
&ndr_table_lsarpc.syntax_id,
|
||||
&lsa_pipe);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
goto done;
|
||||
}
|
||||
|
||||
samr_pipe = cli_rpc_pipe_open_noauth(rpc_pipe_np_smb_conn(cli),
|
||||
PI_SAMR, &status);
|
||||
if (samr_pipe == NULL) goto done;
|
||||
status = cli_rpc_pipe_open_noauth(rpc_pipe_np_smb_conn(cli),
|
||||
&ndr_table_samr.syntax_id,
|
||||
&samr_pipe);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
goto done;
|
||||
}
|
||||
|
||||
status = rpccli_lsa_open_policy(lsa_pipe, mem_ctx, False,
|
||||
SEC_RIGHTS_QUERY_VALUE, &pol);
|
||||
|
@ -145,7 +145,9 @@ static void fetch_machine_sid(struct cli_state *cli)
|
||||
goto error;
|
||||
}
|
||||
|
||||
if ((lsapipe = cli_rpc_pipe_open_noauth(cli, PI_LSARPC, &result)) == NULL) {
|
||||
result = cli_rpc_pipe_open_noauth(cli, &ndr_table_lsarpc.syntax_id,
|
||||
&lsapipe);
|
||||
if (!NT_STATUS_IS_OK(result)) {
|
||||
fprintf(stderr, "could not initialise lsa pipe. Error was %s\n", nt_errstr(result) );
|
||||
goto error;
|
||||
}
|
||||
@ -578,9 +580,10 @@ static NTSTATUS do_cmd(struct cli_state *cli,
|
||||
if (cmd_entry->pipe_idx != -1 && cmd_entry->rpc_pipe == NULL) {
|
||||
switch (pipe_default_auth_type) {
|
||||
case PIPE_AUTH_TYPE_NONE:
|
||||
cmd_entry->rpc_pipe = cli_rpc_pipe_open_noauth(cli,
|
||||
cmd_entry->pipe_idx,
|
||||
&ntresult);
|
||||
ntresult = cli_rpc_pipe_open_noauth(
|
||||
cli,
|
||||
cli_get_iface(cmd_entry->pipe_idx),
|
||||
&cmd_entry->rpc_pipe);
|
||||
break;
|
||||
case PIPE_AUTH_TYPE_SPNEGO_NTLMSSP:
|
||||
cmd_entry->rpc_pipe = cli_rpc_pipe_open_spnego_ntlmssp(cli,
|
||||
@ -613,7 +616,7 @@ static NTSTATUS do_cmd(struct cli_state *cli,
|
||||
pipe_default_auth_type ));
|
||||
return NT_STATUS_UNSUCCESSFUL;
|
||||
}
|
||||
if (!cmd_entry->rpc_pipe) {
|
||||
if (!NT_STATUS_IS_OK(ntresult)) {
|
||||
DEBUG(0, ("Could not initialise %s. Error was %s\n",
|
||||
cli_get_pipe_name(cmd_entry->pipe_idx),
|
||||
nt_errstr(ntresult) ));
|
||||
|
@ -73,8 +73,9 @@ NTSTATUS change_trust_account_password( const char *domain, const char *remote_m
|
||||
|
||||
/* Shouldn't we open this with schannel ? JRA. */
|
||||
|
||||
netlogon_pipe = cli_rpc_pipe_open_noauth(cli, PI_NETLOGON, &nt_status);
|
||||
if (!netlogon_pipe) {
|
||||
nt_status = cli_rpc_pipe_open_noauth(
|
||||
cli, &ndr_table_netlogon.syntax_id, &netlogon_pipe);
|
||||
if (!NT_STATUS_IS_OK(nt_status)) {
|
||||
DEBUG(0,("modify_trust_password: unable to open the domain client session to machine %s. Error was : %s.\n",
|
||||
dc_name, nt_errstr(nt_status)));
|
||||
cli_shutdown(cli);
|
||||
|
@ -1633,8 +1633,8 @@ static int net_ads_printer_publish(struct net_context *c, int argc, const char *
|
||||
SAFE_FREE(srv_cn_escaped);
|
||||
SAFE_FREE(printername_escaped);
|
||||
|
||||
pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_SPOOLSS, &nt_status);
|
||||
if (!pipe_hnd) {
|
||||
nt_status = cli_rpc_pipe_open_noauth(cli, &syntax_spoolss, &pipe_hnd);
|
||||
if (!NT_STATUS_IS_OK(nt_status)) {
|
||||
d_fprintf(stderr, "Unable to open a connnection to the spoolss pipe on %s\n",
|
||||
servername);
|
||||
SAFE_FREE(prt_dn);
|
||||
|
@ -59,8 +59,9 @@ NTSTATUS net_get_remote_domain_sid(struct cli_state *cli, TALLOC_CTX *mem_ctx,
|
||||
NTSTATUS result = NT_STATUS_OK;
|
||||
union lsa_PolicyInformation *info = NULL;
|
||||
|
||||
lsa_pipe = cli_rpc_pipe_open_noauth(cli, PI_LSARPC, &result);
|
||||
if (!lsa_pipe) {
|
||||
result = cli_rpc_pipe_open_noauth(cli, &ndr_table_lsarpc.syntax_id,
|
||||
&lsa_pipe);
|
||||
if (!NT_STATUS_IS_OK(result)) {
|
||||
d_fprintf(stderr, "Could not initialise lsa pipe\n");
|
||||
return result;
|
||||
}
|
||||
@ -173,9 +174,11 @@ int run_rpc_command(struct net_context *c,
|
||||
c->opt_password,
|
||||
&nt_status);
|
||||
} else {
|
||||
pipe_hnd = cli_rpc_pipe_open_noauth(cli, pipe_idx, &nt_status);
|
||||
nt_status = cli_rpc_pipe_open_noauth(
|
||||
cli, cli_get_iface(pipe_idx),
|
||||
&pipe_hnd);
|
||||
}
|
||||
if (!pipe_hnd) {
|
||||
if (!NT_STATUS_IS_OK(nt_status)) {
|
||||
DEBUG(0, ("Could not initialise pipe %s. Error was %s\n",
|
||||
cli_get_pipe_name(pipe_idx),
|
||||
nt_errstr(nt_status) ));
|
||||
@ -296,8 +299,9 @@ static NTSTATUS rpc_oldjoin_internals(struct net_context *c,
|
||||
NTSTATUS result;
|
||||
uint32 sec_channel_type;
|
||||
|
||||
pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_NETLOGON, &result);
|
||||
if (!pipe_hnd) {
|
||||
result = cli_rpc_pipe_open_noauth(cli, &ndr_table_netlogon.syntax_id,
|
||||
&pipe_hnd);
|
||||
if (!NT_STATUS_IS_OK(result)) {
|
||||
DEBUG(0,("rpc_oldjoin_internals: netlogon pipe open to machine %s failed. "
|
||||
"error was %s\n",
|
||||
cli->desthost,
|
||||
@ -2000,8 +2004,9 @@ static NTSTATUS get_sid_from_name(struct cli_state *cli,
|
||||
POLICY_HND lsa_pol;
|
||||
NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
|
||||
|
||||
pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_LSARPC, &result);
|
||||
if (!pipe_hnd) {
|
||||
result = cli_rpc_pipe_open_noauth(cli, &ndr_table_lsarpc.syntax_id,
|
||||
&pipe_hnd);
|
||||
if (!NT_STATUS_IS_OK(result)) {
|
||||
goto done;
|
||||
}
|
||||
|
||||
@ -2813,9 +2818,10 @@ static NTSTATUS rpc_list_alias_members(struct net_context *c,
|
||||
return NT_STATUS_OK;
|
||||
}
|
||||
|
||||
lsa_pipe = cli_rpc_pipe_open_noauth(rpc_pipe_np_smb_conn(pipe_hnd),
|
||||
PI_LSARPC, &result);
|
||||
if (!lsa_pipe) {
|
||||
result = cli_rpc_pipe_open_noauth(rpc_pipe_np_smb_conn(pipe_hnd),
|
||||
&ndr_table_lsarpc.syntax_id,
|
||||
&lsa_pipe);
|
||||
if (!NT_STATUS_IS_OK(result)) {
|
||||
d_fprintf(stderr, "Couldn't open LSA pipe. Error was %s\n",
|
||||
nt_errstr(result) );
|
||||
return result;
|
||||
@ -5962,8 +5968,9 @@ static NTSTATUS rpc_trustdom_get_pdc(struct net_context *c,
|
||||
|
||||
/* Try netr_GetDcName */
|
||||
|
||||
netr = cli_rpc_pipe_open_noauth(cli, PI_NETLOGON, &status);
|
||||
if (!netr) {
|
||||
status = cli_rpc_pipe_open_noauth(cli, &ndr_table_netlogon.syntax_id,
|
||||
&netr);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
return status;
|
||||
}
|
||||
|
||||
@ -6091,8 +6098,9 @@ static int rpc_trustdom_establish(struct net_context *c, int argc,
|
||||
* Call LsaOpenPolicy and LsaQueryInfo
|
||||
*/
|
||||
|
||||
pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_LSARPC, &nt_status);
|
||||
if (!pipe_hnd) {
|
||||
nt_status = cli_rpc_pipe_open_noauth(cli, &ndr_table_lsarpc.syntax_id,
|
||||
&pipe_hnd);
|
||||
if (!NT_STATUS_IS_OK(nt_status)) {
|
||||
DEBUG(0, ("Could not initialise lsa pipe. Error was %s\n", nt_errstr(nt_status) ));
|
||||
cli_shutdown(cli);
|
||||
talloc_destroy(mem_ctx);
|
||||
@ -6345,8 +6353,9 @@ static int rpc_trustdom_vampire(struct net_context *c, int argc,
|
||||
return -1;
|
||||
};
|
||||
|
||||
pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_LSARPC, &nt_status);
|
||||
if (!pipe_hnd) {
|
||||
nt_status = cli_rpc_pipe_open_noauth(cli, &ndr_table_lsarpc.syntax_id,
|
||||
&pipe_hnd);
|
||||
if (!NT_STATUS_IS_OK(nt_status)) {
|
||||
DEBUG(0, ("Could not initialise lsa pipe. Error was %s\n",
|
||||
nt_errstr(nt_status) ));
|
||||
cli_shutdown(cli);
|
||||
@ -6501,8 +6510,9 @@ static int rpc_trustdom_list(struct net_context *c, int argc, const char **argv)
|
||||
return -1;
|
||||
};
|
||||
|
||||
pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_LSARPC, &nt_status);
|
||||
if (!pipe_hnd) {
|
||||
nt_status = cli_rpc_pipe_open_noauth(cli, &ndr_table_lsarpc.syntax_id,
|
||||
&pipe_hnd);
|
||||
if (!NT_STATUS_IS_OK(nt_status)) {
|
||||
DEBUG(0, ("Could not initialise lsa pipe. Error was %s\n",
|
||||
nt_errstr(nt_status) ));
|
||||
cli_shutdown(cli);
|
||||
@ -6591,8 +6601,9 @@ static int rpc_trustdom_list(struct net_context *c, int argc, const char **argv)
|
||||
/*
|
||||
* Open \PIPE\samr and get needed policy handles
|
||||
*/
|
||||
pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_SAMR, &nt_status);
|
||||
if (!pipe_hnd) {
|
||||
nt_status = cli_rpc_pipe_open_noauth(cli, &ndr_table_samr.syntax_id,
|
||||
&pipe_hnd);
|
||||
if (!NT_STATUS_IS_OK(nt_status)) {
|
||||
DEBUG(0, ("Could not initialise samr pipe. Error was %s\n", nt_errstr(nt_status)));
|
||||
cli_shutdown(cli);
|
||||
talloc_destroy(mem_ctx);
|
||||
|
@ -199,8 +199,9 @@ int net_rpc_join_newstyle(struct net_context *c, int argc, const char **argv)
|
||||
|
||||
/* Fetch domain sid */
|
||||
|
||||
pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_LSARPC, &result);
|
||||
if (!pipe_hnd) {
|
||||
result = cli_rpc_pipe_open_noauth(cli, &ndr_table_lsarpc.syntax_id,
|
||||
&pipe_hnd);
|
||||
if (!NT_STATUS_IS_OK(result)) {
|
||||
DEBUG(0, ("Error connecting to LSA pipe. Error was %s\n",
|
||||
nt_errstr(result) ));
|
||||
goto done;
|
||||
@ -231,8 +232,9 @@ int net_rpc_join_newstyle(struct net_context *c, int argc, const char **argv)
|
||||
}
|
||||
|
||||
/* Create domain user */
|
||||
pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_SAMR, &result);
|
||||
if (!pipe_hnd) {
|
||||
result = cli_rpc_pipe_open_noauth(cli, &ndr_table_samr.syntax_id,
|
||||
&pipe_hnd);
|
||||
if (!NT_STATUS_IS_OK(result)) {
|
||||
DEBUG(0, ("Error connecting to SAM pipe. Error was %s\n",
|
||||
nt_errstr(result) ));
|
||||
goto done;
|
||||
@ -373,8 +375,9 @@ int net_rpc_join_newstyle(struct net_context *c, int argc, const char **argv)
|
||||
|
||||
/* Now check the whole process from top-to-bottom */
|
||||
|
||||
pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_NETLOGON, &result);
|
||||
if (!pipe_hnd) {
|
||||
result = cli_rpc_pipe_open_noauth(cli, &ndr_table_netlogon.syntax_id,
|
||||
&pipe_hnd);
|
||||
if (!NT_STATUS_IS_OK(result)) {
|
||||
DEBUG(0,("Error connecting to NETLOGON pipe. Error was %s\n",
|
||||
nt_errstr(result) ));
|
||||
goto done;
|
||||
|
@ -78,8 +78,10 @@ static NTSTATUS net_sh_run(struct net_context *c,
|
||||
return NT_STATUS_NO_MEMORY;
|
||||
}
|
||||
|
||||
pipe_hnd = cli_rpc_pipe_open_noauth(ctx->cli, cmd->pipe_idx, &status);
|
||||
if (pipe_hnd == NULL) {
|
||||
status = cli_rpc_pipe_open_noauth(ctx->cli,
|
||||
cli_get_iface(cmd->pipe_idx),
|
||||
&pipe_hnd);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
d_fprintf(stderr, "Could not open pipe: %s\n",
|
||||
nt_errstr(status));
|
||||
return status;
|
||||
|
@ -36,8 +36,9 @@ NTSTATUS net_rpc_lookup_name(struct net_context *c,
|
||||
|
||||
ZERO_STRUCT(pol);
|
||||
|
||||
lsa_pipe = cli_rpc_pipe_open_noauth(cli, PI_LSARPC, &result);
|
||||
if (lsa_pipe == NULL) {
|
||||
result = cli_rpc_pipe_open_noauth(cli, &ndr_table_lsarpc.syntax_id,
|
||||
&lsa_pipe);
|
||||
if (!NT_STATUS_IS_OK(result)) {
|
||||
d_fprintf(stderr, "Could not initialise lsa pipe\n");
|
||||
return result;
|
||||
}
|
||||
@ -303,8 +304,9 @@ NTSTATUS connect_dst_pipe(struct net_context *c, struct cli_state **cli_dst,
|
||||
return nt_status;
|
||||
}
|
||||
|
||||
pipe_hnd = cli_rpc_pipe_open_noauth(cli_tmp, pipe_num, &nt_status);
|
||||
if (!pipe_hnd) {
|
||||
nt_status = cli_rpc_pipe_open_noauth(cli_tmp, cli_get_iface(pipe_num),
|
||||
&pipe_hnd);
|
||||
if (!NT_STATUS_IS_OK(nt_status)) {
|
||||
DEBUG(0, ("couldn't not initialize pipe\n"));
|
||||
cli_shutdown(cli_tmp);
|
||||
SAFE_FREE(server_name);
|
||||
|
@ -118,11 +118,11 @@ static struct con_struct *create_cs(struct net_context *c,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
cs->lsapipe = cli_rpc_pipe_open_noauth(cs->cli,
|
||||
PI_LSARPC,
|
||||
&nt_status);
|
||||
nt_status = cli_rpc_pipe_open_noauth(cs->cli,
|
||||
&ndr_table_lsarpc.syntax_id,
|
||||
&cs->lsapipe);
|
||||
|
||||
if (cs->lsapipe == NULL) {
|
||||
if (!NT_STATUS_IS_OK(nt_status)) {
|
||||
DEBUG(2,("create_cs: open LSA pipe failed. Error was %s\n", nt_errstr(nt_status)));
|
||||
cs->failed_connect = true;
|
||||
cs->err = nt_status;
|
||||
|
@ -80,8 +80,9 @@ static NTSTATUS cli_lsa_lookup_sid(struct cli_state *cli,
|
||||
return cli_nt_error(cli);
|
||||
}
|
||||
|
||||
p = cli_rpc_pipe_open_noauth(cli, PI_LSARPC, &status);
|
||||
if (p == NULL) {
|
||||
status = cli_rpc_pipe_open_noauth(cli, &ndr_table_lsarpc.syntax_id,
|
||||
&p);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@ -127,8 +128,9 @@ static NTSTATUS cli_lsa_lookup_name(struct cli_state *cli,
|
||||
return cli_nt_error(cli);
|
||||
}
|
||||
|
||||
p = cli_rpc_pipe_open_noauth(cli, PI_LSARPC, &status);
|
||||
if (p == NULL) {
|
||||
status = cli_rpc_pipe_open_noauth(cli, &ndr_table_lsarpc.syntax_id,
|
||||
&p);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
@ -49,8 +49,10 @@ static bool cli_open_policy_hnd(void)
|
||||
if (!cli_ipc) {
|
||||
NTSTATUS ret;
|
||||
cli_ipc = connect_one("IPC$");
|
||||
global_pipe_hnd = cli_rpc_pipe_open_noauth(cli_ipc, PI_LSARPC, &ret);
|
||||
if (!global_pipe_hnd) {
|
||||
ret = cli_rpc_pipe_open_noauth(cli_ipc,
|
||||
&ndr_table_lsarpc.syntax_id,
|
||||
&global_pipe_hnd);
|
||||
if (!NT_STATUS_IS_OK(ret)) {
|
||||
return False;
|
||||
}
|
||||
}
|
||||
|
@ -163,9 +163,10 @@ static bool get_rpc_shares(struct cli_state *cli,
|
||||
return False;
|
||||
}
|
||||
|
||||
pipe_hnd = cli_rpc_pipe_open_noauth(cli, PI_SRVSVC, &status);
|
||||
status = cli_rpc_pipe_open_noauth(cli, &ndr_table_srvsvc.syntax_id,
|
||||
&pipe_hnd);
|
||||
|
||||
if (pipe_hnd == NULL) {
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
DEBUG(10, ("Could not connect to srvsvc pipe: %s\n",
|
||||
nt_errstr(status)));
|
||||
TALLOC_FREE(mem_ctx);
|
||||
|
@ -1712,10 +1712,11 @@ static void set_dc_type_and_flags_connect( struct winbindd_domain *domain )
|
||||
|
||||
DEBUG(5, ("set_dc_type_and_flags_connect: domain %s\n", domain->name ));
|
||||
|
||||
cli = cli_rpc_pipe_open_noauth(domain->conn.cli, PI_DSSETUP,
|
||||
&result);
|
||||
result = cli_rpc_pipe_open_noauth(domain->conn.cli,
|
||||
&ndr_table_dssetup.syntax_id,
|
||||
&cli);
|
||||
|
||||
if (cli == NULL) {
|
||||
if (!NT_STATUS_IS_OK(result)) {
|
||||
DEBUG(5, ("set_dc_type_and_flags_connect: Could not bind to "
|
||||
"PI_DSSETUP on domain %s: (%s)\n",
|
||||
domain->name, nt_errstr(result)));
|
||||
@ -1759,9 +1760,10 @@ static void set_dc_type_and_flags_connect( struct winbindd_domain *domain )
|
||||
}
|
||||
|
||||
no_dssetup:
|
||||
cli = cli_rpc_pipe_open_noauth(domain->conn.cli, PI_LSARPC, &result);
|
||||
result = cli_rpc_pipe_open_noauth(domain->conn.cli,
|
||||
&ndr_table_lsarpc.syntax_id, &cli);
|
||||
|
||||
if (cli == NULL) {
|
||||
if (!NT_STATUS_IS_OK(result)) {
|
||||
DEBUG(5, ("set_dc_type_and_flags_connect: Could not bind to "
|
||||
"PI_LSARPC on domain %s: (%s)\n",
|
||||
domain->name, nt_errstr(result)));
|
||||
@ -2031,11 +2033,10 @@ NTSTATUS cm_connect_sam(struct winbindd_domain *domain, TALLOC_CTX *mem_ctx,
|
||||
anonymous:
|
||||
|
||||
/* Finally fall back to anonymous. */
|
||||
conn->samr_pipe = cli_rpc_pipe_open_noauth(conn->cli, PI_SAMR,
|
||||
&result);
|
||||
result = cli_rpc_pipe_open_noauth(conn->cli, &ndr_table_samr.syntax_id,
|
||||
&conn->samr_pipe);
|
||||
|
||||
if (conn->samr_pipe == NULL) {
|
||||
result = NT_STATUS_PIPE_NOT_AVAILABLE;
|
||||
if (!NT_STATUS_IS_OK(result)) {
|
||||
goto done;
|
||||
}
|
||||
|
||||
@ -2167,9 +2168,10 @@ NTSTATUS cm_connect_lsa(struct winbindd_domain *domain, TALLOC_CTX *mem_ctx,
|
||||
|
||||
anonymous:
|
||||
|
||||
conn->lsa_pipe = cli_rpc_pipe_open_noauth(conn->cli, PI_LSARPC,
|
||||
&result);
|
||||
if (conn->lsa_pipe == NULL) {
|
||||
result = cli_rpc_pipe_open_noauth(conn->cli,
|
||||
&ndr_table_lsarpc.syntax_id,
|
||||
&conn->lsa_pipe);
|
||||
if (!NT_STATUS_IS_OK(result)) {
|
||||
result = NT_STATUS_PIPE_NOT_AVAILABLE;
|
||||
goto done;
|
||||
}
|
||||
@ -2219,9 +2221,10 @@ NTSTATUS cm_connect_netlogon(struct winbindd_domain *domain,
|
||||
return NT_STATUS_OK;
|
||||
}
|
||||
|
||||
netlogon_pipe = cli_rpc_pipe_open_noauth(conn->cli, PI_NETLOGON,
|
||||
&result);
|
||||
if (netlogon_pipe == NULL) {
|
||||
result = cli_rpc_pipe_open_noauth(conn->cli,
|
||||
&ndr_table_netlogon.syntax_id,
|
||||
&netlogon_pipe);
|
||||
if (!NT_STATUS_IS_OK(result)) {
|
||||
return result;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user