This is a cross-post from glibc bugreport:
http://sourceware.org/bugzilla/show_bug.cgi?id=14090


In short, the code below handles blocks larger than 8 GB incorrectly because
they require ctx->total[1] incremented more than by 1:

------------------------------------------------------------------------------
  /* First increment the byte count.  RFC 1321 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];

------------------------------------------------------------------------------

Note that md5sum is not affected by this, as it calls
md5_process_block() with small and fixed block size.


Testcase for the bug:
http://sourceware.org/bugzilla/attachment.cgi?id=6411

Reply via email to