summaryrefslogtreecommitdiffstats
path: root/source/libsmb/clireadwrite.c
diff options
context:
space:
mode:
authorHerb Lewis <herb@samba.org>2002-12-19 20:23:45 +0000
committerHerb Lewis <herb@samba.org>2002-12-19 20:23:45 +0000
commit723c4caf64c56b78052c52fec78c7143ec19e944 (patch)
tree972da832572aad3b423b01552d45999192f4629b /source/libsmb/clireadwrite.c
parent47a0ba53fdf52fb4d269b1ff95491e73e47423be (diff)
downloadsamba-723c4caf64c56b78052c52fec78c7143ec19e944.tar.gz
samba-723c4caf64c56b78052c52fec78c7143ec19e944.tar.xz
samba-723c4caf64c56b78052c52fec78c7143ec19e944.zip
merge from 2.2 fix for smbclient large files
Diffstat (limited to 'source/libsmb/clireadwrite.c')
-rw-r--r--source/libsmb/clireadwrite.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/source/libsmb/clireadwrite.c b/source/libsmb/clireadwrite.c
index 38e8aac42a5..7780c93cc43 100644
--- a/source/libsmb/clireadwrite.c
+++ b/source/libsmb/clireadwrite.c
@@ -29,10 +29,15 @@ Issue a single SMBread and don't wait for a reply.
static BOOL cli_issue_read(struct cli_state *cli, int fnum, off_t offset,
size_t size, int i)
{
+ BOOL bigoffset = False;
+
memset(cli->outbuf,'\0',smb_size);
memset(cli->inbuf,'\0',smb_size);
- set_message(cli->outbuf,10,0,True);
+ if ((SMB_BIG_UINT)offset >> 32)
+ bigoffset = True;
+
+ set_message(cli->outbuf,bigoffset ? 12 : 10,0,True);
SCVAL(cli->outbuf,smb_com,SMBreadX);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
@@ -45,6 +50,9 @@ static BOOL cli_issue_read(struct cli_state *cli, int fnum, off_t offset,
SSVAL(cli->outbuf,smb_vwv6,size);
SSVAL(cli->outbuf,smb_mid,cli->mid + i);
+ if (bigoffset)
+ SIVAL(cli->outbuf,smb_vwv10,(offset>>32) & 0xffffffff);
+
return cli_send_smb(cli);
}