summaryrefslogtreecommitdiff
path: root/source3/smbd
diff options
context:
space:
mode:
authorLuke Leighton <lkcl@samba.org>1997-10-22 18:37:43 +0000
committerLuke Leighton <lkcl@samba.org>1997-10-22 18:37:43 +0000
commitd38aba33afefc5791c1a672f5786bf2d8da8dda8 (patch)
treea71714d8db5183376ad82e978606269f97ba7c56 /source3/smbd
parenta947dff4c001023d0f7c2f6f13c3a4b594c88139 (diff)
downloadsamba-d38aba33afefc5791c1a672f5786bf2d8da8dda8.tar.gz
samba-d38aba33afefc5791c1a672f5786bf2d8da8dda8.tar.bz2
samba-d38aba33afefc5791c1a672f5786bf2d8da8dda8.zip
client.c :
send to \PIPE\ not \PIPE\NETLOGON. ipc.c : fstring name not being bzero'd caused problems when calling named_pipe(). (This used to be commit 2393c49b0509b8ce021f0acfba135219cd753cf9)
Diffstat (limited to 'source3/smbd')
-rw-r--r--source3/smbd/ipc.c33
1 files changed, 24 insertions, 9 deletions
diff --git a/source3/smbd/ipc.c b/source3/smbd/ipc.c
index efae39889d..01502573fc 100644
--- a/source3/smbd/ipc.c
+++ b/source3/smbd/ipc.c
@@ -2769,6 +2769,7 @@ static int api_fd_reply(int cnum,uint16 vuid,char *outbuf,
int fd;
int subcommand;
+ DEBUG(5,("api_fd_reply\n"));
/* First find out the name of this file. */
if (suwcnt != 2)
{
@@ -2976,18 +2977,24 @@ static int named_pipe(int cnum,uint16 vuid, char *outbuf,char *name,
int suwcnt,int tdscnt,int tpscnt,
int msrcnt,int mdrcnt,int mprcnt)
{
+ DEBUG(3,("named pipe command on <%s> name\n"));
- if (strequal(name,"LANMAN"))
- return(api_reply(cnum,vuid,outbuf,data,params,tdscnt,tpscnt,mdrcnt,mprcnt));
+ if (strequal(name,"LANMAN"))
+ {
+ return api_reply(cnum,vuid,outbuf,data,params,tdscnt,tpscnt,mdrcnt,mprcnt);
+ }
-if (strlen(name) < 1)
- return(api_fd_reply(cnum,vuid,outbuf,setup,data,params,suwcnt,tdscnt,tpscnt,mdrcnt,mprcnt));
+ if (strlen(name) < 1)
+ {
+ return api_fd_reply(cnum,vuid,outbuf,setup,data,params,suwcnt,tdscnt,tpscnt,mdrcnt,mprcnt);
+ }
+ if (setup)
+ {
+ DEBUG(3,("unknown named pipe: setup 0x%X setup1=%d\n", (int)setup[0],(int)setup[1]));
+ }
- DEBUG(3,("named pipe command on <%s> 0x%X setup1=%d\n",
- name,(int)setup[0],(int)setup[1]));
-
- return(0);
+ return 0;
}
@@ -3018,6 +3025,7 @@ int reply_trans(char *inbuf,char *outbuf)
int dsoff = SVAL(inbuf,smb_vwv12);
int suwcnt = CVAL(inbuf,smb_vwv13);
+ bzero(name, sizeof(name));
fstrcpy(name,smb_buf(inbuf));
if (dscnt > tdscnt || pscnt > tpscnt) {
@@ -3096,11 +3104,18 @@ int reply_trans(char *inbuf,char *outbuf)
DEBUG(3,("trans <%s> data=%d params=%d setup=%d\n",name,tdscnt,tpscnt,suwcnt));
-
if (strncmp(name,"\\PIPE\\",strlen("\\PIPE\\")) == 0)
+ {
+ DEBUG(5,("calling named_pipe\n"));
outsize = named_pipe(cnum,vuid,outbuf,name+strlen("\\PIPE\\"),setup,data,params,
suwcnt,tdscnt,tpscnt,msrcnt,mdrcnt,mprcnt);
+ }
+ else
+ {
+ DEBUG(3,("invalid pipe name\n"));
+ outsize = 0;
+ }
if (data) free(data);