/* struct smb2_handle handle; */
uint64_t unknown1; /* 0x0000000000000000 */
uint64_t unknown2; /* 0x0000000000000000 */
- uint8_t _bug;
} in;
struct {
/* static body buffer 16 (0x10) bytes */
} in;
struct {
/* static body buffer 17 (0x11) bytes */
- /* uint16_t buffer_code; 0x11 */
+ /* uint16_t buffer_code; 0x11 = 0x10 + 1*/
uint16_t _pad;
uint32_t nwritten;
uint64_t unknown1; /* 0x0000000000000000 */
- uint8_t _bug;
} out;
} smb2;
};
{
struct smb2_request *req;
- req = smb2_request_init_tree(tree, SMB2_OP_READ, 0x31, False, 0);
+ req = smb2_request_init_tree(tree, SMB2_OP_READ, 0x30, True, 0);
if (req == NULL) return NULL;
SSVAL(req->out.body, 0x02, 0); /* pad */
smb2_push_handle(req->out.body+0x10, &io->in.file.handle);
SBVAL(req->out.body, 0x20, io->in.unknown1);
SBVAL(req->out.body, 0x28, io->in.unknown2);
- SCVAL(req->out.body, 0x30, io->in._bug);
smb2_transport_send(req);
return smb2_request_destroy(req);
}
- SMB2_CHECK_PACKET_RECV(req, 0x11, False);
+ SMB2_CHECK_PACKET_RECV(req, 0x10, True);
io->out._pad = SVAL(req->in.body, 0x02);
io->out.nwritten = IVAL(req->in.body, 0x04);
io->out.unknown1 = BVAL(req->in.body, 0x08);
- io->out._bug = CVAL(req->in.body, 0x10);
return smb2_request_destroy(req);
}
wr->smb2.out._pad = 0;
wr->smb2.out.nwritten = wr2->generic.out.nwritten;
wr->smb2.out.unknown1 = 0;
- wr->smb2.out._bug = 0;
break;
default:
io->smb2.in.file.ntvfs = smb2srv_pull_handle(req, req->in.body, 0x10);
io->smb2.in.unknown1 = BVAL(req->in.body, 0x20);
io->smb2.in.unknown2 = BVAL(req->in.body, 0x28);
- io->smb2.in._bug = CVAL(req->in.body, 0x30);
SMB2SRV_CHECK_FILE_HANDLE(io->smb2.in.file.ntvfs);
SSVAL(req->out.body, 0x02, io->smb2.out._pad);
SIVAL(req->out.body, 0x04, io->smb2.out.nwritten);
SBVAL(req->out.body, 0x08, io->smb2.out.unknown1);
- SCVAL(req->out.body, 0x10, io->smb2.out._bug);
smb2srv_send_reply(req);
}