libcli/smb/smb2_signing: pass down 'protocol' to smb2_signing_[sign|check]_pdu()
authorStefan Metzmacher <metze@samba.org>
Mon, 27 Feb 2012 08:29:53 +0000 (09:29 +0100)
committerStefan Metzmacher <metze@samba.org>
Mon, 27 Feb 2012 13:26:32 +0000 (14:26 +0100)
metze

Autobuild-User: Stefan Metzmacher <metze@samba.org>
Autobuild-Date: Mon Feb 27 14:26:32 CET 2012 on sn-devel-104

libcli/smb/smb2_signing.c
libcli/smb/smb2_signing.h
libcli/smb/smbXcli_base.c
libcli/smb/smb_common.h
source3/smbd/smb2_server.c

index d3ff4c04e7643ccac4ac309d8d860cbd7f352ce3..30172772b7c746866168701a7e78a101141c1c1f 100644 (file)
@@ -24,6 +24,7 @@
 #include "../lib/crypto/crypto.h"
 
 NTSTATUS smb2_signing_sign_pdu(DATA_BLOB signing_key,
+                              enum protocol_types protocol,
                               struct iovec *vector,
                               int count)
 {
@@ -77,6 +78,7 @@ NTSTATUS smb2_signing_sign_pdu(DATA_BLOB signing_key,
 }
 
 NTSTATUS smb2_signing_check_pdu(DATA_BLOB signing_key,
+                               enum protocol_types protocol,
                                const struct iovec *vector,
                                int count)
 {
index dcabcaad09d86854065499820788b1152d49fba4..ba2b1ca302ed3fbc3372c58b0630ac80d00d478e 100644 (file)
 struct iovec;
 
 NTSTATUS smb2_signing_sign_pdu(DATA_BLOB signing_key,
+                              enum protocol_types protocol,
                               struct iovec *vector,
                               int count);
 
 NTSTATUS smb2_signing_check_pdu(DATA_BLOB signing_key,
+                               enum protocol_types protocol,
                                const struct iovec *vector,
                                int count);
 
index 6b4458878bd6aaba90c3a56896b5fc6a23e779e1..f47659dd038a34efbe1d8bfb8c40857724c00af6 100644 (file)
@@ -2623,6 +2623,7 @@ skip_credits:
                        NTSTATUS status;
 
                        status = smb2_signing_sign_pdu(*signing_key,
+                                                      state->session->conn->protocol,
                                                       &iov[hdr_iov], num_iov - hdr_iov);
                        if (!NT_STATUS_IS_OK(status)) {
                                return status;
@@ -3046,7 +3047,9 @@ static NTSTATUS smb2cli_conn_dispatch_incoming(struct smbXcli_conn *conn,
                }
 
                if (signing_key) {
-                       status = smb2_signing_check_pdu(*signing_key, cur, 3);
+                       status = smb2_signing_check_pdu(*signing_key,
+                                                       state->conn->protocol,
+                                                       cur, 3);
                        if (!NT_STATUS_IS_OK(status)) {
                                /*
                                 * If the signing check fails, we disconnect
@@ -4147,6 +4150,7 @@ NTSTATUS smb2cli_session_set_session_key(struct smbXcli_session *session,
        }
 
        status = smb2_signing_check_pdu(session->smb2.channel_signing_key,
+                                       session->conn->protocol,
                                        recv_iov, 3);
        if (!NT_STATUS_IS_OK(status)) {
                return status;
@@ -4232,6 +4236,7 @@ NTSTATUS smb2cli_session_set_channel_key(struct smbXcli_session *session,
        }
 
        status = smb2_signing_check_pdu(session->smb2.channel_signing_key,
+                                       session->conn->protocol,
                                        recv_iov, 3);
        if (!NT_STATUS_IS_OK(status)) {
                return status;
index 1f21e553bae87f883a814cc83f132a186f826db3..47a336a38f4d2fe65135d67831da37534a162f1b 100644 (file)
 #ifndef __LIBCLI_SMB_SMB_COMMON_H__
 #define __LIBCLI_SMB_SMB_COMMON_H__
 
+#include "libcli/smb/smb_constants.h"
 #include "libcli/smb/smb2_constants.h"
 #include "libcli/smb/smb2_create_blob.h"
 #include "libcli/smb/smb2_signing.h"
-#include "libcli/smb/smb_constants.h"
 #include "libcli/smb/smb_util.h"
 #include "libcli/smb/smb_unix_ext.h"
 
index 899de07c2350673b4663a5aeeb11fc30f022f1b2..7233e09bd2bbfc4be17cdaa0b7fa38859005c7d0 100644 (file)
@@ -786,6 +786,7 @@ static NTSTATUS smb2_send_async_interim_response(const struct smbd_smb2_request
        if (nreq->do_signing) {
                NTSTATUS status;
                status = smb2_signing_sign_pdu(nreq->session->session_key,
+                                       get_Protocol(),
                                        &nreq->out.vector[i], 3);
                if (!NT_STATUS_IS_OK(status)) {
                        return status;
@@ -1071,6 +1072,7 @@ static void smbd_smb2_request_pending_timer(struct tevent_context *ev,
                NTSTATUS status;
 
                status = smb2_signing_sign_pdu(req->session->session_key,
+                                       get_Protocol(),
                                        &state->vector[1], 2);
                if (!NT_STATUS_IS_OK(status)) {
                        smbd_server_connection_terminate(req->sconn,
@@ -1376,6 +1378,7 @@ NTSTATUS smbd_smb2_request_dispatch(struct smbd_smb2_request *req)
 
                req->do_signing = true;
                status = smb2_signing_check_pdu(req->session->session_key,
+                                               get_Protocol(),
                                                &req->in.vector[i], 3);
                if (!NT_STATUS_IS_OK(status)) {
                        return smbd_smb2_request_error(req, status);
@@ -1865,6 +1868,7 @@ static NTSTATUS smbd_smb2_request_reply(struct smbd_smb2_request *req)
        if (req->do_signing) {
                NTSTATUS status;
                status = smb2_signing_sign_pdu(req->session->session_key,
+                                              get_Protocol(),
                                               &req->out.vector[i], 3);
                if (!NT_STATUS_IS_OK(status)) {
                        return status;