s3-schannel: Fix Bug #6697. Interdomain trusts with Windows 2008 R2 DCs.
authorGünther Deschner <gd@samba.org>
Tue, 8 Sep 2009 09:57:52 +0000 (11:57 +0200)
committerKarolin Seeger <kseeger@samba.org>
Wed, 7 Oct 2009 06:54:48 +0000 (08:54 +0200)
The Schannel verifier (aka NL_AUTH_SIGNATURE) structure (32 byte) sent from a
W2k8r2 DC is passed in a buffer with the size of a NL_AUTH_SHA2_SIGNATURE (56
byte). We should just ignore the remaining 12 zeroed bytes and proceed.

Guenther
(cherry picked from commit e7e1e1887e79e4dcbd8836b775e387751c44f318)

source/include/rpc_dce.h
source/rpc_client/cli_pipe.c

index b63f0eac5e39059e579c61ecd8cfde629fe417be..2129c6db413f71101c04bb984f1c296d213eae60 100644 (file)
@@ -150,7 +150,7 @@ enum schannel_direction {
 };
 
 /* Maximum size of the signing data in a fragment. */
-#define RPC_MAX_SIGN_SIZE 0x20 /* 32 */
+#define RPC_MAX_SIGN_SIZE 0x38 /* 56 */
 
 /* Maximum PDU fragment size. */
 /* #define MAX_PDU_FRAG_LEN 0x1630             this is what wnt sets */
index 1442a3c1b8cfc26766df8547f3de75a50b4b85da..2e2767b47070217443253906ea86788ee6f4650e 100644 (file)
@@ -490,7 +490,7 @@ static NTSTATUS cli_pipe_verify_schannel(struct rpc_pipe_client *cli, RPC_HDR *p
                return NT_STATUS_OK;
        }
 
-       if (auth_len != RPC_AUTH_SCHANNEL_SIGN_OR_SEAL_CHK_LEN) {
+       if (auth_len < RPC_AUTH_SCHANNEL_SIGN_OR_SEAL_CHK_LEN) {
                DEBUG(0,("cli_pipe_verify_schannel: auth_len %u.\n", (unsigned int)auth_len ));
                return NT_STATUS_INVALID_PARAMETER;
        }