From: Jim Meyering Date: Sat, 24 Jun 2000 07:37:44 +0000 (+0000) Subject: (sysv_sum_file): Avoid overflowing 32-bit accumulator X-Git-Tag: FILEUTILS-4_0v~18 X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=a6e6a1e05b5ea28e8f8b3696c0e7748923cb1da4;p=thirdparty%2Fcoreutils.git (sysv_sum_file): Avoid overflowing 32-bit accumulator on files larger than 256 MB. --- diff --git a/src/sum.c b/src/sum.c index b012182c85..745093109f 100644 --- a/src/sum.c +++ b/src/sum.c @@ -176,6 +176,9 @@ sysv_sum_file (const char *file, int print_name) for (i = 0; i < bytes_read; i++) checksum += buf[i]; + /* Reduce checksum mod 0xffff, to avoid overflow. */ + checksum = (checksum & 0xffff) + (checksum >> 16); + total_bytes += bytes_read; }