Add back restriction on AD length of GCM

Fixes: bd513bb53d80276431161e5a64a2ae61740c4e68
Signed-off-by: Chien Wong <m@xv97.com>
diff --git a/library/gcm.c b/library/gcm.c
index c677ca4..b31003f 100644
--- a/library/gcm.c
+++ b/library/gcm.c
@@ -354,9 +354,12 @@
 {
     const unsigned char *p;
     size_t use_len, offset;
+    uint64_t new_add_len;
 
-    /* IV is limited to 2^64 bits, so 2^61 bytes */
-    if ((uint64_t) add_len >> 61 != 0) {
+    /* 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 (new_add_len < ctx->add_len || new_add_len >> 61 != 0) {
         return MBEDTLS_ERR_GCM_BAD_INPUT;
     }