Handle sizeof(size_t) > sizeof(uint64_t)
Signed-off-by: Chien Wong <m@xv97.com>
diff --git a/library/gcm.c b/library/gcm.c
index 337145b..033cb59 100644
--- a/library/gcm.c
+++ b/library/gcm.c
@@ -358,7 +358,12 @@
/* AD is limited to 2^64 bits, ie 2^61 bytes
* Also check for possible overflow */
- new_add_len = ctx->add_len + add_len;
+#if SIZE_MAX > 0xFFFFFFFFFFFFFFFFULL
+ if (add_len > 0xFFFFFFFFFFFFFFFFULL) {
+ return MBEDTLS_ERR_GCM_BAD_INPUT;
+ }
+#endif
+ new_add_len = ctx->add_len + (uint64_t) add_len;
if (new_add_len < ctx->add_len || new_add_len >> 61 != 0) {
return MBEDTLS_ERR_GCM_BAD_INPUT;
}