diff --git a/ChangeLog b/ChangeLog index 41aacc8edb..66a0b7178f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2012-08-15 Roland McGrath + + * crypt/sha512.c (sha512_process_block) [!USE_TOTAL128]: Avoid + shifting LEN more than 31 bits at once. + 2012-08-15 Liubov Dmitrieva [BZ #14195] diff --git a/crypt/sha512.c b/crypt/sha512.c index bec7bb3515..0675c948c1 100644 --- a/crypt/sha512.c +++ b/crypt/sha512.c @@ -125,7 +125,7 @@ sha512_process_block (const void *buffer, size_t len, struct sha512_ctx *ctx) #else uint64_t lolen = len; ctx->total[TOTAL128_low] += lolen; - ctx->total[TOTAL128_high] += ((len >> 63 >> 1) + ctx->total[TOTAL128_high] += ((len >> 31 >> 31 >> 2) + (ctx->total[TOTAL128_low] < lolen)); #endif