diff options
author | Stefan Metzmacher <metze@samba.org> | 2012-07-25 23:29:28 +0200 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2012-07-25 23:29:28 +0200 |
commit | 3cce5214f9d458f95885a5fc6b5a7b946a7b50a0 (patch) | |
tree | c52f53f1af129b3443b0bae86b81b29aac87f658 /source3 | |
parent | 5c3a0cbae0eee6c2c35e2de037380546fc22dd9c (diff) | |
download | samba-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')
-rw-r--r-- | source3/smbd/smb2_ioctl.c | 77 |
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; |