From 183f91a212879229d37e4dce18edd7a141eefa12 Mon Sep 17 00:00:00 2001 From: Tomas Mraz Date: Thu, 28 Mar 2013 15:30:19 +0100 Subject: Fix strict aliasing issue in MD5 implementations. modules/pam_namespace/md5.c (MD5Final): Use memcpy instead of assignment. modules/pam_unix/md5.c (MD5Final): Use memcpy instead of assignment. --- modules/pam_namespace/md5.c | 3 +-- modules/pam_unix/md5.c | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) (limited to 'modules') diff --git a/modules/pam_namespace/md5.c b/modules/pam_namespace/md5.c index ce4f7d6e..dc95ab14 100644 --- a/modules/pam_namespace/md5.c +++ b/modules/pam_namespace/md5.c @@ -142,8 +142,7 @@ void MD5Name(MD5Final)(unsigned char digest[16], struct MD5Context *ctx) byteReverse(ctx->in, 14); /* Append length in bits and transform */ - ((uint32 *) ctx->in)[14] = ctx->bits[0]; - ((uint32 *) ctx->in)[15] = ctx->bits[1]; + memcpy((uint32 *)ctx->in + 14, ctx->bits, 2*sizeof(uint32)); MD5Name(MD5Transform)(ctx->buf, (uint32 *) ctx->in); byteReverse((unsigned char *) ctx->buf, 4); diff --git a/modules/pam_unix/md5.c b/modules/pam_unix/md5.c index 7881db5d..94f0485b 100644 --- a/modules/pam_unix/md5.c +++ b/modules/pam_unix/md5.c @@ -142,8 +142,7 @@ void MD5Name(MD5Final)(unsigned char digest[16], struct MD5Context *ctx) byteReverse(ctx->in, 14); /* Append length in bits and transform */ - ((uint32 *) ctx->in)[14] = ctx->bits[0]; - ((uint32 *) ctx->in)[15] = ctx->bits[1]; + memcpy((uint32 *)ctx->in + 14, ctx->bits, 2*sizeof(uint32)); MD5Name(MD5Transform)(ctx->buf, (uint32 *) ctx->in); byteReverse((unsigned char *) ctx->buf, 4); -- cgit v1.2.3