s4:rpc_server: fix padding caclucation in dcesrv_auth_response()
authorStefan Metzmacher <metze@samba.org>
Sat, 20 Jun 2015 15:49:02 +0000 (17:49 +0200)
committerKarolin Seeger <kseeger@samba.org>
Sat, 11 Jul 2015 19:59:26 +0000 (21:59 +0200)
This is simplified by using DCERPC_AUTH_PAD_LENGTH() and changes the behaviour
so that we will use no padding if the stub_length is already aligned
to DCERPC_AUTH_PAD_ALIGNMENT (16 bytes).

BUG: https://bugzilla.samba.org/show_bug.cgi?id=11061

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
(cherry picked from commit 69c1b4b7c10dd5fd9cacaa3a76c47bc854ee3fed)

source4/rpc_server/dcesrv_auth.c

index 38189cde69cfda4863d2c651ac824395b74eb4b4..575ba7091c260ec5f69df8964b151760d0692d1d 100644 (file)
@@ -435,7 +435,7 @@ bool dcesrv_auth_response(struct dcesrv_call_state *call,
           whole packet, whereas w2k8 wants it relative to the start
           of the stub */
        dce_conn->auth_state.auth_info->auth_pad_length =
-               (16 - (pkt->u.response.stub_and_verifier.length & 15)) & 15;
+               DCERPC_AUTH_PAD_LENGTH(pkt->u.response.stub_and_verifier.length);
        ndr_err = ndr_push_zero(ndr,
                                dce_conn->auth_state.auth_info->auth_pad_length);
        if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {