summaryrefslogtreecommitdiff
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
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
-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;