Commit da01515c authored by Ben Laurie's avatar Ben Laurie
Browse files

More strict aliasing fix.

parent 7c43ea50
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -962,15 +962,16 @@ int CRYPTO_gcm128_encrypt(GCM128_CONTEXT *ctx,
		    size_t j=GHASH_CHUNK;

		    while (j) {
			size_t *out_t=(size_t *)out, *ivec_t=(size_t *)ivec;
			const size_t *in_t=(const size_t *)in;
			(*block)(ctx->Yi.c,ctx->EKi.c,key);
			++ctr;
			if (is_endian.little)
				PUTU32(ctx->Yi.c+12,ctr);
			else
				ctx->Yi.d[3] = ctr;
			for (i=0; i<16; i+=sizeof(size_t))
				*(size_t *)(out+i) =
				*(size_t *)(in+i)^*(size_t *)(ctx->EKi.c+i);
			for (i=0; i<16/sizeof(size_t); ++i)
				out_t[i] = in_t[i] ^ ctx->EKi.t[i];
			out += 16;
			in  += 16;
			j   -= 16;
+2 −2
Original line number Diff line number Diff line
@@ -101,8 +101,8 @@ typedef struct { u64 hi,lo; } u128;

struct gcm128_context {
	/* Following 6 names follow names in GCM specification */
	union { u64 u[2]; u32 d[4]; u8 c[16]; }	Yi,EKi,EK0,len,
						Xi,H;
	union { u64 u[2]; u32 d[4]; u8 c[16]; size_t t[16/sizeof(size_t)]; }
	  Yi,EKi,EK0,len,Xi,H;
	/* Relative position of Xi, H and pre-computed Htable is used
	 * in some assembler modules, i.e. don't change the order! */
#if TABLE_BITS==8