OS/X can not deal with a 10-vwv read on normal files.
Autobuild-User: Volker Lendecke <vlendec@samba.org>
Autobuild-Date: Wed Sep 21 00:51:08 CEST 2011 on sn-devel-104
(cherry picked from commit
81703ab7528055bbae8306d2c9a8314316107f85)
{
struct tevent_req *req, *subreq;
struct cli_read_andx_state *state;
{
struct tevent_req *req, *subreq;
struct cli_read_andx_state *state;
- bool bigoffset = False;
uint8_t wct = 10;
if (size > cli_read_max_bufsize(cli)) {
uint8_t wct = 10;
if (size > cli_read_max_bufsize(cli)) {
SSVAL(state->vwv + 8, 0, 0);
SSVAL(state->vwv + 9, 0, 0);
SSVAL(state->vwv + 8, 0, 0);
SSVAL(state->vwv + 9, 0, 0);
- if ((uint64_t)offset >> 32) {
- bigoffset = true;
+ if (cli->capabilities & CAP_LARGE_FILES) {
SIVAL(state->vwv + 10, 0,
(((uint64_t)offset)>>32) & 0xffffffff);
SIVAL(state->vwv + 10, 0,
(((uint64_t)offset)>>32) & 0xffffffff);
+ wct = 12;
+ } else {
+ if ((((uint64_t)offset) & 0xffffffff00000000LL) != 0) {
+ DEBUG(10, ("cli_read_andx_send got large offset where "
+ "the server does not support it\n"));
+ tevent_req_nterror(req, NT_STATUS_INVALID_PARAMETER);
+ return tevent_req_post(req, ev);
+ }
}
subreq = cli_smb_req_create(state, ev, cli, SMBreadX, 0, wct,
}
subreq = cli_smb_req_create(state, ev, cli, SMBreadX, 0, wct,