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)
committerStefan Metzmacher <metze@samba.org>
Thu, 4 Mar 2010 13:11:51 +0000 (14:11 +0100)
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)

Signed-off-by: Stefan Metzmacher <metze@samba.org>
source/include/rpc_dce.h
source/rpc_client/cli_pipe.c

index 33ab365160430eafccfa732c18c8e7abb1cc4aa8..b2e7b06812b973b0312bf6c0d0bbf7a615711a59 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 35b5a8d9901fd275e8cd6facf66a4d75e1e8bc3e..297892588d617a41c8e4ad60ba62c9bb0dbd3cdc 100644 (file)
@@ -349,7 +349,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;
        }