mirror of
https://github.com/samba-team/samba.git
synced 2025-02-23 09:57:40 +03:00
Fix client large file reporting.
Jeremy
This commit is contained in:
parent
f4235ae1e6
commit
185804ac94
@ -35,7 +35,7 @@
|
||||
|
||||
typedef struct file_info
|
||||
{
|
||||
SMB_OFF_T size;
|
||||
SMB_BIG_UINT size;
|
||||
uint16 mode;
|
||||
uid_t uid;
|
||||
gid_t gid;
|
||||
|
@ -590,10 +590,14 @@ typedef int socklen_t;
|
||||
#define SOFF_T(p, ofs, v) (SIVAL(p,ofs,(v)&0xFFFFFFFF), SIVAL(p,(ofs)+4,(v)>>32))
|
||||
#define SOFF_T_R(p, ofs, v) (SIVAL(p,(ofs)+4,(v)&0xFFFFFFFF), SIVAL(p,ofs,(v)>>32))
|
||||
#define IVAL_TO_SMB_OFF_T(buf,off) ((SMB_OFF_T)(( ((SMB_BIG_UINT)(IVAL((buf),(off)))) & ((SMB_BIG_UINT)0xFFFFFFFF) )))
|
||||
#define IVAL2_TO_SMB_BIG_UINT(buf,off) ( (((SMB_BIG_UINT)(IVAL((buf),(off)))) & ((SMB_BIG_UINT)0xFFFFFFFF)) | \
|
||||
(( ((SMB_BIG_UINT)(IVAL((buf),(off+4)))) & ((SMB_BIG_UINT)0xFFFFFFFF) ) << 32 ) )
|
||||
#else
|
||||
#define SOFF_T(p, ofs, v) (SIVAL(p,ofs,v),SIVAL(p,(ofs)+4,0))
|
||||
#define SOFF_T_R(p, ofs, v) (SIVAL(p,(ofs)+4,v),SIVAL(p,ofs,0))
|
||||
#define IVAL_TO_SMB_OFF_T(buf,off) ((SMB_OFF_T)(( ((uint32)(IVAL((buf),(off)))) & 0xFFFFFFFF )))
|
||||
#define IVAL2_TO_SMB_BIG_UINT(buf,off) ( (((SMB_BIG_UINT)(IVAL((buf),(off)))) & ((SMB_BIG_UINT)0xFFFFFFFF)) | \
|
||||
(( ((SMB_BIG_UINT)(IVAL((buf),(off+4)))) & ((SMB_BIG_UINT)0xFFFFFFFF) ) << 32 ) )
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
@ -48,7 +48,7 @@ static int interpret_long_filename(struct cli_state *cli,
|
||||
finfo->ctime = make_unix_date2(p+4);
|
||||
finfo->atime = make_unix_date2(p+8);
|
||||
finfo->mtime = make_unix_date2(p+12);
|
||||
finfo->size = IVAL_TO_SMB_OFF_T(p,16);
|
||||
finfo->size = IVAL(p,16);
|
||||
finfo->mode = CVAL(p,24);
|
||||
len = CVAL(p, 26);
|
||||
p += 27;
|
||||
@ -69,7 +69,7 @@ static int interpret_long_filename(struct cli_state *cli,
|
||||
finfo->ctime = make_unix_date2(p+4);
|
||||
finfo->atime = make_unix_date2(p+8);
|
||||
finfo->mtime = make_unix_date2(p+12);
|
||||
finfo->size = IVAL_TO_SMB_OFF_T(p,16);
|
||||
finfo->size = IVAL(p,16);
|
||||
finfo->mode = CVAL(p,24);
|
||||
len = CVAL(p, 30);
|
||||
p += 31;
|
||||
@ -104,7 +104,7 @@ static int interpret_long_filename(struct cli_state *cli,
|
||||
finfo->ctime = interpret_long_date(p); p += 8;
|
||||
finfo->atime = interpret_long_date(p); p += 8;
|
||||
finfo->mtime = interpret_long_date(p); p += 8; p += 8;
|
||||
finfo->size = IVAL_TO_SMB_OFF_T(p,0); p += 8;
|
||||
finfo->size = IVAL2_TO_SMB_BIG_UINT(p,0); p += 8;
|
||||
p += 8; /* alloc size */
|
||||
finfo->mode = CVAL(p,0); p += 4;
|
||||
namelen = IVAL(p,0); p += 4;
|
||||
@ -322,7 +322,7 @@ static int interpret_short_filename(struct cli_state *cli, char *p,file_info *fi
|
||||
/* this date is converted to GMT by make_unix_date */
|
||||
finfo->ctime = make_unix_date(p+22);
|
||||
finfo->mtime = finfo->atime = finfo->ctime;
|
||||
finfo->size = IVAL_TO_SMB_OFF_T(p,26);
|
||||
finfo->size = IVAL(p,26);
|
||||
clistr_pull(cli, finfo->name, p+30, sizeof(finfo->name), 12, STR_ASCII);
|
||||
if (strcmp(finfo->name, "..") && strcmp(finfo->name, "."))
|
||||
fstrcpy(finfo->short_name,finfo->name);
|
||||
|
Loading…
x
Reference in New Issue
Block a user