[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 04/12] sum: handle EOVERFLOW for too large inputs
From: |
Pádraig Brady |
Subject: |
[PATCH 04/12] sum: handle EOVERFLOW for too large inputs |
Date: |
Sun, 12 Sep 2021 19:13:58 +0100 |
* src/sum.c (bsd_sum_stream): Detect overflow when updating length.
(sysv_sum_stream): Likewise.
---
src/sum.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/src/sum.c b/src/sum.c
index 1633c86c5..4e1efe9e1 100644
--- a/src/sum.c
+++ b/src/sum.c
@@ -73,6 +73,11 @@ bsd_sum_stream (FILE *stream, void *resstream, uintmax_t
*length)
checksum += buffer[i];
checksum &= 0xffff; /* Keep it within bounds. */
}
+ if (total_bytes + sum < total_bytes)
+ {
+ errno = EOVERFLOW;
+ goto cleanup_buffer;
+ }
total_bytes += sum;
}
@@ -84,6 +89,11 @@ final_process:;
checksum += buffer[i];
checksum &= 0xffff; /* Keep it within bounds. */
}
+ if (total_bytes + sum < total_bytes)
+ {
+ errno = EOVERFLOW;
+ goto cleanup_buffer;
+ }
total_bytes += sum;
memcpy (resstream, &checksum, sizeof checksum);
@@ -139,6 +149,11 @@ sysv_sum_stream (FILE *stream, void *resstream, uintmax_t
*length)
for (size_t i = 0; i < sum; i++)
s += buffer[i];
+ if (total_bytes + sum < total_bytes)
+ {
+ errno = EOVERFLOW;
+ goto cleanup_buffer;
+ }
total_bytes += sum;
}
@@ -146,6 +161,11 @@ final_process:;
for (size_t i = 0; i < sum; i++)
s += buffer[i];
+ if (total_bytes + sum < total_bytes)
+ {
+ errno = EOVERFLOW;
+ goto cleanup_buffer;
+ }
total_bytes += sum;
int r = (s & 0xffff) + ((s & 0xffffffff) >> 16);
--
2.26.2
- [PATCH V2] Add support for cksum --algorithm [sm3], Pádraig Brady, 2021/09/12
- [PATCH 01/12] maint: rename md5sum.c to more general digest.c, Pádraig Brady, 2021/09/12
- [PATCH 02/12] digest: add LENGTH parameter to digest to support cksum, Pádraig Brady, 2021/09/12
- [PATCH 05/12] cksum: add --debug to --help output and man page, Pádraig Brady, 2021/09/12
- [PATCH 03/12] digest: refactor sum(1) into digest.c, Pádraig Brady, 2021/09/12
- [PATCH 04/12] sum: handle EOVERFLOW for too large inputs,
Pádraig Brady <=
- [PATCH 09/12] maint: simplify b2sum to only handle BLAKE2b, Pádraig Brady, 2021/09/12
- [PATCH 08/12] digest: add support for sm3, Pádraig Brady, 2021/09/12
- [PATCH 06/12] digest: refactor cksum(1) into digest.c, Pádraig Brady, 2021/09/12
- [PATCH 07/12] cksum: add --algorithm option to select digest mode, Pádraig Brady, 2021/09/12
- [PATCH 12/12] cksum: support --zero in default mode, Pádraig Brady, 2021/09/12
- [PATCH 10/12] cksum: support digest detection for tagged format, Pádraig Brady, 2021/09/12
- [PATCH 11/12] digest: support -length specifiers on all digest tags, Pádraig Brady, 2021/09/12