s3:smb2_negprot: add support for PROTOCOL_SMB2_24
[mat/samba.git] / source3 / smbd / smb2_negprot.c
index 1733728c5f0661bd78de55633c484cf8c979ca1b..4cae143d75a5ba587e537e02ef39851f11b9050c 100644 (file)
@@ -118,6 +118,36 @@ NTSTATUS smbd_smb2_request_process_negprot(struct smbd_smb2_request *req)
        }
        indyn = (const uint8_t *)req->in.vector[i+2].iov_base;
 
+       for (c=0; protocol == PROTOCOL_NONE && c < dialect_count; c++) {
+               if (lp_maxprotocol() < PROTOCOL_SMB2_24) {
+                       break;
+               }
+               if (lp_minprotocol() > PROTOCOL_SMB2_24) {
+                       break;
+               }
+
+               dialect = SVAL(indyn, c*2);
+               if (dialect == SMB2_DIALECT_REVISION_224) {
+                       protocol = PROTOCOL_SMB2_24;
+                       break;
+               }
+       }
+
+       for (c=0; protocol == PROTOCOL_NONE && c < dialect_count; c++) {
+               if (lp_maxprotocol() < PROTOCOL_SMB2_22) {
+                       break;
+               }
+               if (lp_minprotocol() > PROTOCOL_SMB2_22) {
+                       break;
+               }
+
+               dialect = SVAL(indyn, c*2);
+               if (dialect == SMB2_DIALECT_REVISION_222) {
+                       protocol = PROTOCOL_SMB2_22;
+                       break;
+               }
+       }
+
        for (c=0; protocol == PROTOCOL_NONE && c < dialect_count; c++) {
                if (lp_maxprotocol() < PROTOCOL_SMB2_10) {
                        break;
@@ -186,7 +216,7 @@ NTSTATUS smbd_smb2_request_process_negprot(struct smbd_smb2_request *req)
        }
 
        security_mode = SMB2_NEGOTIATE_SIGNING_ENABLED;
-       if (lp_server_signing() == Required) {
+       if (lp_server_signing() == SMB_SIGNING_REQUIRED) {
                security_mode |= SMB2_NEGOTIATE_SIGNING_REQUIRED;
        }