]> granicus.if.org Git - linux-pam/commitdiff
Fix strict aliasing issue in MD5 implementations.
authorTomas Mraz <tmraz@fedoraproject.org>
Thu, 28 Mar 2013 14:30:19 +0000 (15:30 +0100)
committerTomas Mraz <tmraz@fedoraproject.org>
Thu, 28 Mar 2013 14:30:19 +0000 (15:30 +0100)
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
modules/pam_unix/md5.c

index ce4f7d6edb783448109095f71c1f92b9771c2310..dc95ab14a0b2505fc9e9141ed028ff6b66b6ff6f 100644 (file)
@@ -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);
index 7881db5dbc1841f33918e850c607885c3104b8a4..94f0485be5b7a73128ea4b5f9ee8eea71156f5a0 100644 (file)
@@ -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);