summaryrefslogtreecommitdiff
path: root/dev-python/python-fchksum/files/python-fchksum-1.7.1-md5-align.patch
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python/python-fchksum/files/python-fchksum-1.7.1-md5-align.patch')
-rw-r--r--dev-python/python-fchksum/files/python-fchksum-1.7.1-md5-align.patch26
1 files changed, 26 insertions, 0 deletions
diff --git a/dev-python/python-fchksum/files/python-fchksum-1.7.1-md5-align.patch b/dev-python/python-fchksum/files/python-fchksum-1.7.1-md5-align.patch
new file mode 100644
index 00000000000..1adfa627fdd
--- /dev/null
+++ b/dev-python/python-fchksum/files/python-fchksum-1.7.1-md5-align.patch
@@ -0,0 +1,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;
+ }