X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fmd4.c;h=e1079b63ce4b9fe03df287de36199d1e7a616297;hb=5191b3546cfb6c163228c23f214e325ddf60d46f;hp=6807a830d32b92bfc86af5f83aff0eabb30d85db;hpb=2d540c2cb293bff09a2fe1b1bab9d1775d7e2832;p=gnulib.git diff --git a/lib/md4.c b/lib/md4.c index 6807a830d..e1079b63c 100644 --- a/lib/md4.c +++ b/lib/md4.c @@ -1,6 +1,6 @@ /* Functions to compute MD4 message digest of files or memory blocks. according to the definition of MD4 in RFC 1320 from April 1992. - Copyright (C) 1995-1997, 1999-2003, 2005-2006, 2008-2011 Free Software + Copyright (C) 1995-1997, 1999-2003, 2005-2006, 2008-2013 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it @@ -14,8 +14,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + along with this program; if not, see . */ /* Adapted by Simon Josefsson from gnulib md5.? and Libgcrypt cipher/md4.c . */ @@ -68,7 +67,7 @@ md4_init_ctx (struct md4_ctx *ctx) /* Copy the 4 byte value from v into the memory location pointed to by *cp, If your architecture allows unaligned access this is equivalent to * (uint32_t *) cp = v */ -static inline void +static void set_uint32 (char *cp, uint32_t v) { memcpy (cp, &v, sizeof v); @@ -302,13 +301,13 @@ md4_process_block (const void *buffer, size_t len, struct md4_ctx *ctx) uint32_t B = ctx->B; uint32_t C = ctx->C; uint32_t D = ctx->D; + uint32_t lolen = len; /* First increment the byte count. RFC 1320 specifies the possible length of the file up to 2^64 bits. Here we only compute the number of bytes. Do a double word increment. */ - ctx->total[0] += len; - if (ctx->total[0] < len) - ++ctx->total[1]; + ctx->total[0] += lolen; + ctx->total[1] += (len >> 31 >> 1) + (ctx->total[0] < lolen); /* Process all bytes in the buffer with 64 bytes in each round of the loop. */