* src/cksum.c (cksum_slice8, crc32b_sum_stream): Use ckd_add to check
for overflow.
---
 src/cksum.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/src/cksum.c b/src/cksum.c
index fba33f688..a74af07a0 100644
--- a/src/cksum.c
+++ b/src/cksum.c
@@ -239,12 +239,11 @@ cksum_slice8 (FILE *fp, uint_fast32_t *crc_out, uintmax_t 
*length_out)
     {
       uint32_t *datap;
 
-      if (length + bytes_read < length)
+      if (ckd_add (&length, length, bytes_read))
         {
           errno = EOVERFLOW;
           return false;
         }
-      length += bytes_read;
 
       /* Process multiples of 8 bytes */
       datap = (uint32_t *)buf;
@@ -335,12 +334,11 @@ crc32b_sum_stream (FILE *stream, void *resstream, 
uintmax_t *reslen)
 
   while ((bytes_read = fread (buf, 1, BUFLEN, stream)) > 0)
     {
-      if (len + bytes_read < len)
+      if (ckd_add (&len, len, bytes_read))
         {
           errno = EOVERFLOW;
           return -1;
         }
-      len += bytes_read;
 
       crc = crc32_update (crc, (char const *)buf, bytes_read);
 
-- 
2.51.0


Reply via email to