From 5ff4b74df3f32192c9828233295d9f8fedcceb23 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Wed, 17 May 2006 09:52:14 +0000 Subject: r15656: for NT IOCTL's we need to control the max_data field for some calls metze (This used to be commit 3cab02f6f513cf7eb3d8863e62952766bb4d908f) --- source4/libcli/raw/interfaces.h | 1 + source4/libcli/raw/rawioctl.c | 2 +- source4/smb_server/smb/nttrans.c | 1 + source4/torture/raw/ioctl.c | 4 +++- 4 files changed, 6 insertions(+), 2 deletions(-) (limited to 'source4') diff --git a/source4/libcli/raw/interfaces.h b/source4/libcli/raw/interfaces.h index e0696b45ec..d98b5de370 100644 --- a/source4/libcli/raw/interfaces.h +++ b/source4/libcli/raw/interfaces.h @@ -1716,6 +1716,7 @@ union smb_ioctl { uint32_t function; BOOL fsctl; uint8_t filter; + uint32_t max_data; DATA_BLOB blob; } in; struct { diff --git a/source4/libcli/raw/rawioctl.c b/source4/libcli/raw/rawioctl.c index 77c8c80158..356852edd8 100644 --- a/source4/libcli/raw/rawioctl.c +++ b/source4/libcli/raw/rawioctl.c @@ -77,7 +77,7 @@ static struct smbcli_request *smb_raw_ntioctl_send(struct smbcli_tree *tree, nt.in.max_setup = 0; nt.in.max_param = 0; - nt.in.max_data = 0; + nt.in.max_data = parms->ntioctl.in.max_data; nt.in.setup_count = 4; nt.in.setup = (uint16_t *)setup; SIVAL(setup, 0, parms->ntioctl.in.function); diff --git a/source4/smb_server/smb/nttrans.c b/source4/smb_server/smb/nttrans.c index 9154546693..0ac9c005c7 100644 --- a/source4/smb_server/smb/nttrans.c +++ b/source4/smb_server/smb/nttrans.c @@ -324,6 +324,7 @@ static NTSTATUS nttrans_ioctl(struct smbsrv_request *req, nt->ntioctl.in.function = function; nt->ntioctl.in.fsctl = fsctl; nt->ntioctl.in.filter = filter; + nt->ntioctl.in.max_data = trans->in.max_data; nt->ntioctl.in.blob = trans->in.data; status = nttrans_setup_reply(op, trans, 0, 0, 1); diff --git a/source4/torture/raw/ioctl.c b/source4/torture/raw/ioctl.c index cd93047576..dd100e107d 100644 --- a/source4/torture/raw/ioctl.c +++ b/source4/torture/raw/ioctl.c @@ -105,6 +105,7 @@ static BOOL test_fsctl(struct smbcli_state *cli, TALLOC_CTX *mem_ctx) nt.ntioctl.in.file.fnum = fnum; nt.ntioctl.in.fsctl = True; nt.ntioctl.in.filter = 0; + nt.ntioctl.in.max_data = 0; nt.ntioctl.in.blob = data_blob(NULL, 0); status = smb_raw_ioctl(cli->tree, mem_ctx, &nt); @@ -112,10 +113,11 @@ static BOOL test_fsctl(struct smbcli_state *cli, TALLOC_CTX *mem_ctx) printf("trying batch oplock\n"); nt.ioctl.level = RAW_IOCTL_NTIOCTL; - nt.ntioctl.in.function = (FSCTL_FILESYSTEM | (2<<2)); + nt.ntioctl.in.function = FSCTL_REQUEST_BATCH_OPLOCK; nt.ntioctl.in.file.fnum = fnum; nt.ntioctl.in.fsctl = True; nt.ntioctl.in.filter = 0; + nt.ntioctl.in.max_data = 0; nt.ntioctl.in.blob = data_blob(NULL, 0); status = smb_raw_ioctl(cli->tree, mem_ctx, &nt); -- cgit