summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/include/smb_interfaces.h19
-rw-r--r--source4/libcli/raw/rawreadwrite.c4
2 files changed, 6 insertions, 17 deletions
diff --git a/source4/include/smb_interfaces.h b/source4/include/smb_interfaces.h
index d7fb8ec6b3..771dce8803 100644
--- a/source4/include/smb_interfaces.h
+++ b/source4/include/smb_interfaces.h
@@ -726,7 +726,8 @@ union smb_setfileinfo {
} in;
} setattr;
- /* RAW_SFILEINFO_SETATTRE (SMBsetattrE) interface - only via setfileinfo() */
+ /* RAW_SFILEINFO_SETATTRE (SMBsetattrE) interface - only via setfileinfo()
+ also RAW_SFILEINFO_STANDARD */
struct {
enum smb_setfileinfo_level level;
union setfileinfo_file file;
@@ -735,22 +736,10 @@ union smb_setfileinfo {
time_t create_time;
time_t access_time;
time_t write_time;
- } in;
- } setattre;
-
-
- /* RAW_SFILEINFO_STANDARD interface */
- struct {
- enum smb_setfileinfo_level level;
- union setfileinfo_file file;
- struct {
- time_t create_time;
- time_t access_time;
- time_t write_time;
/* notice that size, alloc_size and attrib are not settable,
unlike the corresponding qfileinfo level */
} in;
- } standard;
+ } setattre, standard;
/* RAW_SFILEINFO_EA_SET interface */
struct {
@@ -1248,7 +1237,7 @@ union smb_read {
uint16_t fnum;
uint64_t offset;
uint16_t mincnt;
- uint16_t maxcnt;
+ uint32_t maxcnt;
uint16_t remaining;
} in;
struct {
diff --git a/source4/libcli/raw/rawreadwrite.c b/source4/libcli/raw/rawreadwrite.c
index e145ff9c10..bc9730f33d 100644
--- a/source4/libcli/raw/rawreadwrite.c
+++ b/source4/libcli/raw/rawreadwrite.c
@@ -77,9 +77,9 @@ struct smbcli_request *smb_raw_read_send(struct smbcli_tree *tree, union smb_rea
SSVAL(req->out.vwv, VWV(1), 0);
SSVAL(req->out.vwv, VWV(2), parms->readx.in.fnum);
SIVAL(req->out.vwv, VWV(3), parms->readx.in.offset);
- SSVAL(req->out.vwv, VWV(5), parms->readx.in.maxcnt);
+ SSVAL(req->out.vwv, VWV(5), parms->readx.in.maxcnt & 0xFFFF);
SSVAL(req->out.vwv, VWV(6), parms->readx.in.mincnt);
- SIVAL(req->out.vwv, VWV(7), 0); /* reserved */
+ SIVAL(req->out.vwv, VWV(7), parms->readx.in.maxcnt >> 16);
SSVAL(req->out.vwv, VWV(9), parms->readx.in.remaining);
if (bigoffset) {
SIVAL(req->out.vwv, VWV(10),parms->readx.in.offset>>32);