s4:librpc/rpc: fix padding caclucation in ncacn_push_request_sign()
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:25 +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 114c52e73ed9e0adeac8ad1bc1dc014f3c10f4d6)

source4/librpc/rpc/dcerpc.c

index 9984ea2ca49ab9ea66347971d08afc60f428d10a..562d52e8d1b593501d06b6160b430d1472f61355 100644 (file)
@@ -854,7 +854,7 @@ static NTSTATUS ncacn_push_request_sign(struct dcecli_connection *c,
           whole packet, whereas w2k8 wants it relative to the start
           of the stub */
        c->security_state.auth_info->auth_pad_length =
-               (16 - (pkt->u.request.stub_and_verifier.length & 15)) & 15;
+               DCERPC_AUTH_PAD_LENGTH(pkt->u.request.stub_and_verifier.length);
        ndr_err = ndr_push_zero(ndr, c->security_state.auth_info->auth_pad_length);
        if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
                return ndr_map_error2ntstatus(ndr_err);