Print this page
12513 SMB 3.1.1 support for server

@@ -9,10 +9,11 @@
  * http://www.illumos.org/license/CDDL.
  */
 
 /*
  * Copyright 2017 Nexenta Systems, Inc.  All rights reserved.
+ * Copyright 2020 RackTop Systems, Inc.
  */
 
 /*
  * Dispatch function for SMB2_SESSION_SETUP
  *

@@ -28,10 +29,11 @@
 
 smb_sdrc_t
 smb2_session_setup(smb_request_t *sr)
 {
         smb_arg_sessionsetup_t  *sinfo;
+        smb_session_t *s = sr->session;
         uint16_t StructureSize;
         uint8_t  Flags;
         uint8_t  SecurityMode;
         uint32_t Capabilities;  /* ignored - see above */
         uint32_t Channel;

@@ -78,10 +80,16 @@
         rc = smb_mbc_decodef(&sr->smb_data, "#c",
             sinfo->ssi_iseclen, sinfo->ssi_isecblob);
         if (rc)
                 return (SDRC_ERROR);
 
+        if (s->dialect >= SMB_VERS_3_11) {
+                ASSERT3U(s->smb31_preauth_hashid, !=, 0);
+                (void) smb31_preauth_sha512_calc(sr, &sr->command,
+                    s->smb31_preauth_hashval);
+        }
+
         /*
          * Decoded everything.  Dtrace probe,
          * then no more early returns.
          */
         DTRACE_SMB2_START(op__SessionSetup, smb_request_t *, sr);