diff options
author | Luke Leighton <lkcl@samba.org> | 1998-10-15 05:47:29 +0000 |
---|---|---|
committer | Luke Leighton <lkcl@samba.org> | 1998-10-15 05:47:29 +0000 |
commit | a42afcdcc7ab9aa9ed193ae36d3dbb10843447f0 (patch) | |
tree | d5f55708810d375cb906e8deea7dd21e522be07f /source3/smbd | |
parent | ba22030ed7e81749116191bce26e948ebf35e2cb (diff) | |
download | samba-a42afcdcc7ab9aa9ed193ae36d3dbb10843447f0.tar.gz samba-a42afcdcc7ab9aa9ed193ae36d3dbb10843447f0.tar.bz2 samba-a42afcdcc7ab9aa9ed193ae36d3dbb10843447f0.zip |
bug-fixing against:
AS/U:
it returns dce/rpc "first" and "last" bits _clear_ in a bind/ack
response, when they should be set in a (small) packet. they also,
in the bind/ack do not set a secondary address string at all, so
we can't check against that...
Win95:
client-side dce/rpc code is a bit odd. it does a "WaitNamedPipeState"
and has slightly different pipe-naming (\PIPE\LANMAN is joined by
\PIPE\SRVSVC, \PIPE\WINREG etc whereas nt just has \PIPE\LANMAN
and \PIPE\).
Win95-USRMGR.EXE:
added LsaOpenPolicy (renamed existing to LsaOpenPolicy2).
added SamrConnect (renamed existing to SamrConnect2).
(This used to be commit a7fccd807b938cbb51002ebae8c7a48b40dbb655)
Diffstat (limited to 'source3/smbd')
-rw-r--r-- | source3/smbd/ipc.c | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/source3/smbd/ipc.c b/source3/smbd/ipc.c index 646ac83331..bfd618f325 100644 --- a/source3/smbd/ipc.c +++ b/source3/smbd/ipc.c @@ -3125,6 +3125,29 @@ static void api_rpc_trans_reply(char *outbuf, } /**************************************************************************** + WaitNamedPipeHandleState +****************************************************************************/ +static BOOL api_WNPHS(char *outbuf, pipes_struct *p, char *param) +{ + uint16 priority; + + if (!param) return False; + + priority = param[0] + (param[1] << 8); + DEBUG(4,("WaitNamedPipeHandleState priority %x\n", priority)); + + if (wait_rpc_pipe_hnd_state(p, priority)) + { + /* now send the reply */ + send_trans_reply(outbuf, NULL, NULL, NULL, 0, p->file_offset); + + return True; + } + return False; +} + + +/**************************************************************************** SetNamedPipeHandleState ****************************************************************************/ static BOOL api_SNPHS(char *outbuf, pipes_struct *p, char *param) @@ -3134,7 +3157,7 @@ static BOOL api_SNPHS(char *outbuf, pipes_struct *p, char *param) if (!param) return False; id = param[0] + (param[1] << 8); - DEBUG(4,("lsarpc SetNamedPipeHandleState to code %x\n", id)); + DEBUG(4,("SetNamedPipeHandleState to code %x\n", id)); if (set_rpc_pipe_hnd_state(p, id)) { @@ -3237,6 +3260,12 @@ static int api_fd_reply(connection_struct *conn,uint16 vuid,char *outbuf, } break; } + case 0x53: + { + /* Wait Named Pipe Handle state */ + reply = api_WNPHS(outbuf, p, params); + break; + } case 0x01: { /* Set Named Pipe Handle state */ @@ -3434,6 +3463,16 @@ static int named_pipe(connection_struct *conn,uint16 vuid, char *outbuf,char *na return api_reply(conn,vuid,outbuf,data,params,tdscnt,tpscnt,mdrcnt,mprcnt); } + if (strequal(name,"WKSSVC") || + strequal(name,"SRVSVC") || + strequal(name,"WINREG") || + strequal(name,"SAMR") || + strequal(name,"LSARPC")) + { + DEBUG(4,("named pipe command from Win95 (wow!)\n")); + return api_fd_reply(conn,vuid,outbuf,setup,data,params,suwcnt,tdscnt,tpscnt,mdrcnt,mprcnt); + } + if (strlen(name) < 1) { return api_fd_reply(conn,vuid,outbuf,setup,data,params,suwcnt,tdscnt,tpscnt,mdrcnt,mprcnt); |