summaryrefslogtreecommitdiff
path: root/source3/smbd/smb2_ioctl.c
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2012-07-25 23:29:28 +0200
committerStefan Metzmacher <metze@samba.org>2012-07-25 23:29:28 +0200
commit3cce5214f9d458f95885a5fc6b5a7b946a7b50a0 (patch)
treec52f53f1af129b3443b0bae86b81b29aac87f658 /source3/smbd/smb2_ioctl.c
parent5c3a0cbae0eee6c2c35e2de037380546fc22dd9c (diff)
downloadsamba-3cce5214f9d458f95885a5fc6b5a7b946a7b50a0.tar.gz
samba-3cce5214f9d458f95885a5fc6b5a7b946a7b50a0.tar.bz2
samba-3cce5214f9d458f95885a5fc6b5a7b946a7b50a0.zip
s3:smb2_ioctl: remove FSCTL_VALIDATE_NEGOTIATE_INFO_224 implementation
Only Windows8 Beta uses this and it's broken, the client send wrong capabilities. Just returning an error seems to be fine for the Windows8 Beta client. metze
Diffstat (limited to 'source3/smbd/smb2_ioctl.c')
-rw-r--r--source3/smbd/smb2_ioctl.c77
1 files changed, 0 insertions, 77 deletions
diff --git a/source3/smbd/smb2_ioctl.c b/source3/smbd/smb2_ioctl.c
index 36b44e62dc..56c075e1db 100644
--- a/source3/smbd/smb2_ioctl.c
+++ b/source3/smbd/smb2_ioctl.c
@@ -487,83 +487,6 @@ static struct tevent_req *smbd_smb2_ioctl_send(TALLOC_CTX *mem_ctx,
req);
return req;
- case FSCTL_VALIDATE_NEGOTIATE_INFO_224:
- {
- struct smbXsrv_connection *conn = smbreq->sconn->conn;
- uint32_t in_capabilities;
- DATA_BLOB in_guid_blob;
- struct GUID in_guid;
- uint16_t in_security_mode;
- uint16_t in_max_dialect;
- uint16_t max_dialect;
- DATA_BLOB out_guid_blob;
- NTSTATUS status;
-
- if (in_input.length != 0x18) {
- tevent_req_nterror(req, NT_STATUS_INVALID_PARAMETER);
- return tevent_req_post(req, ev);
- }
-
- if (in_max_output < 0x18) {
- tevent_req_nterror(req, NT_STATUS_BUFFER_TOO_SMALL);
- return tevent_req_post(req, ev);
- }
-
- in_capabilities = IVAL(in_input.data, 0x00);
- in_guid_blob = data_blob_const(in_input.data + 0x04, 16);
- in_security_mode = SVAL(in_input.data, 0x14);
- in_max_dialect = SVAL(in_input.data, 0x16);
-
- status = GUID_from_ndr_blob(&in_guid_blob, &in_guid);
- if (tevent_req_nterror(req, status)) {
- return tevent_req_post(req, ev);
- }
-
- max_dialect = conn->smb2.client.dialects[conn->smb2.client.num_dialects-1];
- if (in_max_dialect != max_dialect) {
- state->disconnect = true;
- tevent_req_nterror(req, NT_STATUS_ACCESS_DENIED);
- return tevent_req_post(req, ev);
- }
-
- if (!GUID_compare(&in_guid, &conn->smb2.client.guid)) {
- state->disconnect = true;
- tevent_req_nterror(req, NT_STATUS_ACCESS_DENIED);
- return tevent_req_post(req, ev);
- }
-
- if (in_security_mode != conn->smb2.client.security_mode) {
- state->disconnect = true;
- tevent_req_nterror(req, NT_STATUS_ACCESS_DENIED);
- return tevent_req_post(req, ev);
- }
-
- if (in_capabilities != conn->smb2.client.capabilities) {
- state->disconnect = true;
- tevent_req_nterror(req, NT_STATUS_ACCESS_DENIED);
- return tevent_req_post(req, ev);
- }
-
- status = GUID_to_ndr_blob(&conn->smb2.server.guid, state,
- &out_guid_blob);
- if (tevent_req_nterror(req, status)) {
- return tevent_req_post(req, ev);
- }
-
- state->out_output = data_blob_talloc(state, NULL, 0x18);
- if (tevent_req_nomem(state->out_output.data, req)) {
- return tevent_req_post(req, ev);
- }
-
- SIVAL(state->out_output.data, 0x00, conn->smb2.server.capabilities);
- memcpy(state->out_output.data+0x04, out_guid_blob.data, 16);
- SIVAL(state->out_output.data, 0x14, conn->smb2.server.security_mode);
- SIVAL(state->out_output.data, 0x16, conn->smb2.server.dialect);
-
- tevent_req_done(req);
- return tevent_req_post(req, ev);
- }
-
case FSCTL_VALIDATE_NEGOTIATE_INFO:
{
struct smbXsrv_connection *conn = smbreq->sconn->conn;