crypto/asn1/tasn_dec.c:769: 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:671:19: Assignment
669.       char cst, inf, free_cont = 0;
670.       const unsigned char *p;
671.       BUF_MEM buf = { 0, NULL, 0, 0 };
                         ^
672.       const unsigned char *cont = NULL;
673.       long len;

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

crypto/asn1/tasn_dec.c:1003:1: Parameter `buf->max`
  1001.   #endif
  1002.   
  1003. > static int asn1_collect(BUF_MEM *buf, const unsigned char **in, long len,
  1004.                           char inf, int tag, int aclass, int depth)
  1005.   {

crypto/asn1/tasn_dec.c:769:14: Call
767.           len = buf.length;
768.           /* Append a final null to string */
769.           if (!BUF_MEM_grow_clean(&buf, len + 1)) {
                    ^
770.               ASN1err(ASN1_F_ASN1_D2I_EX_PRIMITIVE, ERR_R_MALLOC_FAILURE);
771.               goto err;

crypto/buffer/buffer.c:158:1: Parameter `len`
  156.   }
  157.   
  158. > size_t BUF_MEM_grow_clean(BUF_MEM *str, size_t len)
  159.   {
  160.       char *ret;

crypto/buffer/buffer.c:182:15: Call
  180.           ret = sec_alloc_realloc(str, n);
  181.       else
  182.           ret = OPENSSL_clear_realloc(str->data, str->max, n);
                       ^
  183.       if (ret == NULL) {
  184.           BUFerr(BUF_F_BUF_MEM_GROW_CLEAN, ERR_R_MALLOC_FAILURE);

crypto/mem.c:193:1: <LHS trace>
191.   }
192.   
193. > void *CRYPTO_clear_realloc(void *str, size_t old_len, size_t num,
194.                              const char *file, int line)
195.   {

crypto/mem.c:193:1: Parameter `num`
    191.   }
    192.   
    193. > void *CRYPTO_clear_realloc(void *str, size_t old_len, size_t num,
    194.                              const char *file, int line)
    195.   {

crypto/mem.c:193:1: <RHS trace>
191.   }
192.   
193. > void *CRYPTO_clear_realloc(void *str, size_t old_len, size_t num,
194.                              const char *file, int line)
195.   {

crypto/mem.c:193:1: Parameter `num`
    191.   }
    192.   
    193. > void *CRYPTO_clear_realloc(void *str, size_t old_len, size_t num,
    194.                              const char *file, int line)
    195.   {

crypto/mem.c:208:9: Binary operation: ([2, 2147483644] - [1, 2147483644]):unsigned64 by call to `BUF_MEM_grow_clean` 
    206.       /* Can't shrink the buffer since memcpy below copies |old_len| bytes. */
    207.       if (num < old_len) {
    208.           memset((char*)str + num, 0, old_len - num);
                   ^
    209.           return str;
    210.       }
