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;
     }