blob: 1adfa627fdd8c89277630f4216c81b0ca464c49b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
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;
}
|