blob: 1adfa627fdd8c89277630f4216c81b0ca464c49b [file] [log] [blame]
the alignment of resbuf is not guaranteed, so use memcpy to move
the bytes in/out. on arches which can do unaligned accesses, this
will generate the same code.
patch by Mike Frysinger
--- a/md5.c
+++ b/md5.c
@@ -74,10 +74,13 @@ md5_read_ctx (ctx, resbuf)
const struct md5_ctx *ctx;
void *resbuf;
{
- ((md5_uint32 *) resbuf)[0] = SWAP (ctx->A);
- ((md5_uint32 *) resbuf)[1] = SWAP (ctx->B);
- ((md5_uint32 *) resbuf)[2] = SWAP (ctx->C);
- ((md5_uint32 *) resbuf)[3] = SWAP (ctx->D);
+ md5_uint32 swap;
+#define set(i, c) { swap = SWAP (ctx->c); memcpy (resbuf + (i * 4), &swap, 4); }
+ set (0, A);
+ set (1, B);
+ set (2, C);
+ set (3, D);
+#undef set
return resbuf;
}