summaryrefslogtreecommitdiff
path: root/source3/rpc_server
diff options
context:
space:
mode:
Diffstat (limited to 'source3/rpc_server')
-rw-r--r--source3/rpc_server/srv_pipe.c41
-rw-r--r--source3/rpc_server/srv_spoolss_nt.c2
2 files changed, 33 insertions, 10 deletions
diff --git a/source3/rpc_server/srv_pipe.c b/source3/rpc_server/srv_pipe.c
index 1947d5514e..5a935be279 100644
--- a/source3/rpc_server/srv_pipe.c
+++ b/source3/rpc_server/srv_pipe.c
@@ -681,26 +681,49 @@ BOOL check_bind_req(char* pipe_name, RPC_IFACE* abstract,
fstrcpy(pname,"\\PIPE\\");
fstrcat(pname,pipe_name);
- for(i=0;pipe_names[i].client_pipe; i++) {
- if(strequal(pipe_names[i].client_pipe, pname))
+
+#ifndef SUPPORT_NEW_LSARPC_UUID
+
+ /* check for the first pipe matching the name */
+
+ for ( i=0; pipe_names[i].client_pipe; i++ ) {
+ if ( strequal(pipe_names[i].client_pipe, pname) )
+ break;
+ }
+#else
+ /* we have to check all now since win2k introduced a new UUID on the lsaprpc pipe */
+
+ for ( i=0; pipe_names[i].client_pipe; i++ )
+ {
+ if ( strequal(pipe_names[i].client_pipe, pname)
+ && (abstract->version == pipe_names[i].abstr_syntax.version)
+ && (memcmp(&abstract->uuid, &pipe_names[i].abstr_syntax.uuid, sizeof(RPC_UUID)) == 0)
+ && (transfer->version == pipe_names[i].trans_syntax.version)
+ && (memcmp(&transfer->uuid, &pipe_names[i].trans_syntax.uuid, sizeof(RPC_UUID)) == 0) )
+ {
break;
+ }
}
+#endif
if(pipe_names[i].client_pipe == NULL)
return False;
+#ifndef SUPPORT_NEW_LSARPC_UUID
/* check the abstract interface */
- if((abstract->version != pipe_names[i].abstr_syntax.version) ||
- (memcmp(&abstract->uuid, &pipe_names[i].abstr_syntax.uuid,
- sizeof(RPC_UUID)) != 0))
+ if ( (abstract->version != pipe_names[i].abstr_syntax.version)
+ || (memcmp(&abstract->uuid, &pipe_names[i].abstr_syntax.uuid, sizeof(RPC_UUID)) != 0) )
+ {
return False;
+ }
/* check the transfer interface */
- if((transfer->version != pipe_names[i].trans_syntax.version) ||
- (memcmp(&transfer->uuid, &pipe_names[i].trans_syntax.uuid,
- sizeof(RPC_UUID)) != 0))
+ if ( (transfer->version != pipe_names[i].trans_syntax.version)
+ || (memcmp(&transfer->uuid, &pipe_names[i].trans_syntax.uuid, sizeof(RPC_UUID)) != 0) )
+ {
return False;
-
+ }
+#endif
return True;
}
diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c
index 12d6639348..41ef599a3c 100644
--- a/source3/rpc_server/srv_spoolss_nt.c
+++ b/source3/rpc_server/srv_spoolss_nt.c
@@ -2375,7 +2375,7 @@ static BOOL spoolss_connect_to_client(struct cli_state *the_cli, char *remote_ma
* Now start the NT Domain stuff :-).
*/
- if(cli_nt_session_open(the_cli, PIPE_SPOOLSS) == False) {
+ if(cli_nt_session_open(the_cli, PI_SPOOLSS) == False) {
DEBUG(0,("connect_to_client: unable to open the domain client session to machine %s. Error was : %s.\n", remote_machine, cli_errstr(the_cli)));
cli_nt_session_close(the_cli);
cli_ulogoff(the_cli);