crypto/asn1/tasn_dec.c:729: error: INTEGER_OVERFLOW_L2
  ([2, 2147483644] - [1, 2147483644]):unsigned64 by call to `BUF_MEM_grow_clean`.
Showing all 11 steps of the trace


crypto/asn1/tasn_dec.c:631:19: Assignment
629.       char cst, inf, free_cont = 0;
630.       const unsigned char *p;
631.       BUF_MEM buf = { 0, NULL, 0, 0 };
                         ^
632.       const unsigned char *cont = NULL;
633.       long len;

crypto/asn1/tasn_dec.c:724:14: Call
722.            * So instead just check for UNIVERSAL class and ignore the tag.
723.            */
724.           if (!asn1_collect(&buf, &p, plen, inf, -1, V_ASN1_UNIVERSAL, 0)) {
                    ^
725.               goto err;
726.           }

crypto/asn1/tasn_dec.c:966:1: Parameter `buf->max`
  964.   #endif
  965.   
  966. > static int asn1_collect(BUF_MEM *buf, const unsigned char **in, long len,
  967.                           char inf, int tag, int aclass, int depth)
  968.   {

crypto/asn1/tasn_dec.c:729:14: Call
727.           len = buf.length;
728.           /* Append a final null to string */
729.           if (!BUF_MEM_grow_clean(&buf, len + 1)) {
                    ^
730.               ASN1err(ASN1_F_ASN1_D2I_EX_PRIMITIVE, ERR_R_MALLOC_FAILURE);
731.               goto err;

crypto/buffer/buffer.c:109:1: Parameter `len`
  107.   }
  108.   
  109. > size_t BUF_MEM_grow_clean(BUF_MEM *str, size_t len)
  110.   {
  111.       char *ret;

crypto/buffer/buffer.c:134:15: Call
  132.           ret = sec_alloc_realloc(str, n);
  133.       else
  134.           ret = OPENSSL_clear_realloc(str->data, str->max, n);
                       ^
  135.       if (ret == NULL) {
  136.           BUFerr(BUF_F_BUF_MEM_GROW_CLEAN, ERR_R_MALLOC_FAILURE);

crypto/mem.c:136:1: <LHS trace>
134.   }
135.   
136. > void *CRYPTO_clear_realloc(void *str, size_t old_len, size_t num,
137.                              const char *file, int line)
138.   {

crypto/mem.c:136:1: Parameter `num`
    134.   }
    135.   
    136. > void *CRYPTO_clear_realloc(void *str, size_t old_len, size_t num,
    137.                              const char *file, int line)
    138.   {

crypto/mem.c:136:1: <RHS trace>
134.   }
135.   
136. > void *CRYPTO_clear_realloc(void *str, size_t old_len, size_t num,
137.                              const char *file, int line)
138.   {

crypto/mem.c:136:1: Parameter `num`
    134.   }
    135.   
    136. > void *CRYPTO_clear_realloc(void *str, size_t old_len, size_t num,
    137.                              const char *file, int line)
    138.   {

crypto/mem.c:151:9: Binary operation: ([2, 2147483644] - [1, 2147483644]):unsigned64 by call to `BUF_MEM_grow_clean` 
    149.       /* Can't shrink the buffer since memcpy below copies |old_len| bytes. */
    150.       if (num < old_len) {
    151.           OPENSSL_cleanse((char*)str + num, old_len - num);
                   ^
    152.           return str;
    153.       }
