diff options
author | Luke Leighton <lkcl@samba.org> | 1997-11-01 19:20:29 +0000 |
---|---|---|
committer | Luke Leighton <lkcl@samba.org> | 1997-11-01 19:20:29 +0000 |
commit | c533c0755398219036360cf4131251a146995731 (patch) | |
tree | cb0765835de67d41449e53f40fd7db1fb33c9efa /source3/client/clientutil.c | |
parent | 9b1b14155b88d97e8351f28b875126513d6aa566 (diff) | |
download | samba-c533c0755398219036360cf4131251a146995731.tar.gz samba-c533c0755398219036360cf4131251a146995731.tar.bz2 samba-c533c0755398219036360cf4131251a146995731.zip |
client.c clientutil.c proto.h
rpc_pipes/ntclientlsa.c rpc_pipes/ntclientnet.c
rpc_pipes/ntclientpipe.c :
added extra argument to cli_call_api() to allow specifying the length of
the \PIPE\ name. it appears that, like when the name of the pipe is NULL
and OS-2 requires two extra bytes _after_ the NULL name, that NT requires
two bytes after the NULL-terminated name "\PIPE\". these two bytes vary,
but values seen so far are: 0x72 0x70; 0x63 0x65; 0x44 0x65; 0x4E 0x00.
there appears not to be much logic to this. purpose unknown.
ntclient.c:
put Set Named Pipe Handle State call directly after SMBopenX call.
(This used to be commit 54c245be152e5fa8f5b535c93f8d11c5f591e23f)
Diffstat (limited to 'source3/client/clientutil.c')
-rw-r--r-- | source3/client/clientutil.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/source3/client/clientutil.c b/source3/client/clientutil.c index 8924e692aa..1d4f3fcb43 100644 --- a/source3/client/clientutil.c +++ b/source3/client/clientutil.c @@ -92,7 +92,8 @@ void cli_setup_pkt(char *outbuf) /**************************************************************************** call a remote api ****************************************************************************/ -BOOL cli_call_api(char *pipe_name, int prcnt,int drcnt, int srcnt, +BOOL cli_call_api(char *pipe_name, int pipe_name_len, + int prcnt,int drcnt, int srcnt, int mprcnt,int mdrcnt, int *rprcnt,int *rdrcnt, char *param,char *data, uint16 *setup, @@ -104,7 +105,9 @@ BOOL cli_call_api(char *pipe_name, int prcnt,int drcnt, int srcnt, if (!inbuf) inbuf = (char *)malloc(BUFFER_SIZE + SAFETY_MARGIN); if (!outbuf) outbuf = (char *)malloc(BUFFER_SIZE + SAFETY_MARGIN); - cli_send_trans_request(outbuf,SMBtrans,pipe_name, 0,0, + if (pipe_name_len == 0) pipe_name_len = strlen(pipe_name); + + cli_send_trans_request(outbuf,SMBtrans,pipe_name, pipe_name_len, 0,0, data, param, setup, drcnt, prcnt, srcnt, mdrcnt, mprcnt, 0); @@ -194,7 +197,7 @@ BOOL cli_receive_trans_response(char *inbuf,int trans, send a SMB trans or trans2 request ****************************************************************************/ BOOL cli_send_trans_request(char *outbuf,int trans, - char *name,int fid,int flags, + char *name,int name_len, int fid,int flags, char *data,char *param,uint16 *setup, int ldata,int lparam,int lsetup, int mdata,int mparam,int msetup) @@ -215,7 +218,7 @@ BOOL cli_send_trans_request(char *outbuf,int trans, SSVAL(outbuf,smb_tid,cnum); cli_setup_pkt(outbuf); - outparam = smb_buf(outbuf)+(trans==SMBtrans ? strlen(name)+1 : 3); + outparam = smb_buf(outbuf)+(trans==SMBtrans ? name_len+1 : 3); outdata = outparam+this_lparam; /* primary request */ @@ -235,7 +238,7 @@ BOOL cli_send_trans_request(char *outbuf,int trans, SSVAL(outbuf,smb_setup+i*SIZEOFWORD,setup[i]); p = smb_buf(outbuf); if (trans==SMBtrans) - strcpy(p,name); /* name[] */ + memcpy(p,name, name_len+1); /* name[] */ else { *p++ = 0; /* put in a null smb_name */ |