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)
committerGünther Deschner <gd@samba.org>
Tue, 8 Sep 2009 10:34:10 +0000 (12:34 +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

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

index 3dfbc1672e53602c6e5295bdfe12ade5142929be..cd65ac86569789200f236d930f962bdee41770db 100644 (file)
@@ -92,7 +92,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 0f6471901813d173cb2554555346c574da6769ae..5af2c95811fb2c06728dc6586a2f36a8ae5a0638 100644 (file)
@@ -681,7 +681,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;
        }