diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index 0153ff7e1730344c1430864c3271be40a8211bcd..baa4bdabe222039ee4fbc44eefe7ac6eeb02e1ac 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,8 @@
+2008-03-11  Nick Clifton  <nickc@redhat.com>
+
+	* md5.c (md5_process_bytes): Do not assume that memcpy will
+	provide a return value.
+
 2008-02-19  Ben Elliston  <bje@au.ibm.com>
 
 	PR other/12618
diff --git a/libiberty/md5.c b/libiberty/md5.c
index 83e0beb339fa2a6c0beb80618b7a8306a075ab00..9de9d88c22a52e3e334b3fcfbee25b856aa5009c 100644
--- a/libiberty/md5.c
+++ b/libiberty/md5.c
@@ -234,7 +234,8 @@ md5_process_bytes (const void *buffer, size_t len, struct md5_ctx *ctx)
       if (UNALIGNED_P (buffer))
         while (len > 64)
           {
-            md5_process_block (memcpy (ctx->buffer, buffer, 64), 64, ctx);
+	    memcpy (ctx->buffer, buffer, 64);
+            md5_process_block (ctx->buffer, 64, ctx);
             buffer = (const char *) buffer + 64;
             len -= 64;
           }