diff mbox

[libiberty] : Fix PR 543413

Message ID CAEwic4Y2+BW3984jy6UtGtOOG8gZLW06MhDLNLFrFmGKhh1qpQ@mail.gmail.com
State New
Headers show

Commit Message

Kai Tietz Jan. 30, 2013, 5:44 p.m. UTC
Hi,

this patch fixes wrong handling of cases that bitness of size_t is
wider as 32-bit.

ChangeLog

2013-01-30  Kai Tietz  <ktietz@redhat.com>

	PR other/543413
	* md5.c (md5_process_block):  Handle case that size_t is
	a wider-integer-scalar a 32-bit unsigned integer.

Tested for x86_64-unknown-linux-gnu, i686-pc-cygwin, and
x86_64-w64-mingw32.  Ok for apply?

Regards,
Kai

Comments

Ian Lance Taylor Jan. 30, 2013, 10:51 p.m. UTC | #1
On Wed, Jan 30, 2013 at 9:44 AM, Kai Tietz <ktietz70@googlemail.com> wrote:
>
> 2013-01-30  Kai Tietz  <ktietz@redhat.com>
>
>         PR other/543413
>         * md5.c (md5_process_block):  Handle case that size_t is
>         a wider-integer-scalar a 32-bit unsigned integer.

This is OK.

Thanks.

Ian
Rainer Orth Jan. 31, 2013, 9:11 a.m. UTC | #2
Kai Tietz <ktietz70@googlemail.com> writes:

> this patch fixes wrong handling of cases that bitness of size_t is
> wider as 32-bit.
>
> ChangeLog
>
> 2013-01-30  Kai Tietz  <ktietz@redhat.com>
>
> 	PR other/543413

                 ^ this is clearly wrong (6 digits)

> 	* md5.c (md5_process_block):  Handle case that size_t is
> 	a wider-integer-scalar a 32-bit unsigned integer.

	Rainer
Kai Tietz Jan. 31, 2013, 9:14 a.m. UTC | #3
2013/1/31 Rainer Orth <ro@cebitec.uni-bielefeld.de>:
> Kai Tietz <ktietz70@googlemail.com> writes:
>
>> this patch fixes wrong handling of cases that bitness of size_t is
>> wider as 32-bit.
>>
>> ChangeLog
>>
>> 2013-01-30  Kai Tietz  <ktietz@redhat.com>
>>
>>       PR other/543413
>
>                  ^ this is clearly wrong (6 digits)
>
>>       * md5.c (md5_process_block):  Handle case that size_t is
>>       a wider-integer-scalar a 32-bit unsigned integer.
>
>         Rainer
>
> --
> -----------------------------------------------------------------------------
> Rainer Orth, Center for Biotechnology, Bielefeld University

Thanks, your heads up is too late.  corrected this already.

Cheers,
Kai
diff mbox

Patch

Index: md5.c
===================================================================
--- md5.c	(Revision 195578)
+++ md5.c	(Arbeitskopie)
@@ -293,8 +293,7 @@  md5_process_block (const void *buffer, size_t len,
      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[1] += ((len >> 31) >> 1) + (ctx->total[0] < len);

   /* Process all bytes in the buffer with 64 bytes in each round of
      the loop.  */