Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 90a9b147 authored by James Ettle's avatar James Ettle Committed by J. Bruce Fields
Browse files

sunrpc: Fix unaligned access on sparc64



Fix unaligned access in gss_{get,verify}_mic_v2() on sparc64

Signed-off-by: default avatarJames Ettle <james@ettle.org.uk>
Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
parent 68ef3bc3
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -177,6 +177,7 @@ gss_get_mic_v2(struct krb5_ctx *ctx, struct xdr_buf *text,
	u64 seq_send;
	u8 *cksumkey;
	unsigned int cksum_usage;
	__be64 seq_send_be64;

	dprintk("RPC:       %s\n", __func__);

@@ -187,7 +188,9 @@ gss_get_mic_v2(struct krb5_ctx *ctx, struct xdr_buf *text,
	spin_lock(&krb5_seq_lock);
	seq_send = ctx->seq_send64++;
	spin_unlock(&krb5_seq_lock);
	*((__be64 *)(krb5_hdr + 8)) = cpu_to_be64(seq_send);

	seq_send_be64 = cpu_to_be64(seq_send);
	memcpy(krb5_hdr + 8, (char *) &seq_send_be64, 8);

	if (ctx->initiate) {
		cksumkey = ctx->initiator_sign;
+3 −1
Original line number Diff line number Diff line
@@ -155,10 +155,12 @@ gss_verify_mic_v2(struct krb5_ctx *ctx,
	u8 flags;
	int i;
	unsigned int cksum_usage;
	__be16 be16_ptr;

	dprintk("RPC:       %s\n", __func__);

	if (be16_to_cpu(*((__be16 *)ptr)) != KG2_TOK_MIC)
	memcpy(&be16_ptr, (char *) ptr, 2);
	if (be16_to_cpu(be16_ptr) != KG2_TOK_MIC)
		return GSS_S_DEFECTIVE_TOKEN;

	flags = ptr[2];