]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3:smbd: skip nbt header in srv_check_sign_mac()
authorStefan Metzmacher <metze@samba.org>
Fri, 3 Aug 2012 07:57:19 +0000 (09:57 +0200)
committerStefan Metzmacher <metze@samba.org>
Sat, 4 Aug 2012 07:10:20 +0000 (09:10 +0200)
metze

source3/smbd/signing.c

index f4a8d2a2fdaf62fe97ebe5a89a4638b5b39f6cf5..1661b1bebf9a16e5dc337e340261e49ce17505a0 100644 (file)
@@ -32,29 +32,35 @@ bool srv_check_sign_mac(struct smbd_server_connection *conn,
                        const char *inbuf, uint32_t *seqnum,
                        bool trusted_channel)
 {
+       const uint8_t *inhdr;
+       size_t len;
+
        /* Check if it's a non-session message. */
        if(CVAL(inbuf,0)) {
                return true;
        }
 
+       len = smb_len(inbuf);
+       inhdr = (const uint8_t *)inbuf + NBT_HDR_SIZE;
+
        if (trusted_channel) {
                NTSTATUS status;
 
-               if (smb_len(inbuf) < (smb_ss_field + 8 - 4)) {
+               if (len < (HDR_SS_FIELD + 8)) {
                        DEBUG(1,("smb_signing_check_pdu: Can't check signature "
                                 "on short packet! smb_len = %u\n",
-                                smb_len(inbuf)));
+                                (unsigned)len));
                        return false;
                }
 
-               status = NT_STATUS(IVAL(inbuf, smb_ss_field + 4));
+               status = NT_STATUS(IVAL(inhdr, HDR_SS_FIELD + 4));
                if (!NT_STATUS_IS_OK(status)) {
                        DEBUG(1,("smb_signing_check_pdu: trusted channel passed %s\n",
                                 nt_errstr(status)));
                        return false;
                }
 
-               *seqnum = IVAL(inbuf, smb_ss_field);
+               *seqnum = IVAL(inhdr, HDR_SS_FIELD);
                return true;
        }