crypto/dh/dh_key.c:224: error: INTEGER_OVERFLOW_L2
  ([0, +oo] - 1):unsigned64 by call to `BN_bn2bin`.
Showing all 9 steps of the trace


crypto/dh/dh_key.c:191:8: Call
189.   	if (ctx == NULL) goto err;
190.   	BN_CTX_start(ctx);
191.   	tmp = BN_CTX_get(ctx);
              ^
192.   	
193.   	if (dh->priv_key == NULL)

crypto/bn/bn_ctx.c:302:2: Call
  300.   		}
  301.   	/* OK, make sure the returned bignum is "zero" */
  302.   	BN_zero(ret);
          ^
  303.   	ctx->used++;
  304.   	CTXDBG_RET(ctx, ret);

crypto/bn/bn_lib.c:586:1: Parameter `a->top`
    584.   	}
    585.   
    586. > int BN_set_word(BIGNUM *a, BN_ULONG w)
    587.   	{
    588.   	bn_check_top(a);

crypto/dh/dh_key.c:224:6: Call
222.   		}
223.   
224.   	ret=BN_bn2bin(tmp,key);
            ^
225.   err:
226.   	if (ctx != NULL)

crypto/bn/bn_lib.c:641:1: Parameter `a->top`
  639.   
  640.   /* ignore negative */
  641. > int BN_bn2bin(const BIGNUM *a, unsigned char *to)
  642.   	{
  643.   	int n,i;

crypto/bn/bn_lib.c:647:6: Call
  645.   
  646.   	bn_check_top(a);
  647.   	n=i=BN_num_bytes(a);
              ^
  648.   	while (i--)
  649.   		{

crypto/bn/bn_lib.c:248:1: <LHS trace>
246.   	}
247.   
248. > int BN_num_bits(const BIGNUM *a)
249.   	{
250.   	int i = a->top - 1;

crypto/bn/bn_lib.c:248:1: Parameter `a->top`
    246.   	}
    247.   
    248. > int BN_num_bits(const BIGNUM *a)
    249.   	{
    250.   	int i = a->top - 1;

crypto/bn/bn_lib.c:250:2: Binary operation: ([0, +oo] - 1):unsigned64 by call to `BN_bn2bin` 
    248.   int BN_num_bits(const BIGNUM *a)
    249.   	{
    250.   	int i = a->top - 1;
            ^
    251.   	bn_check_top(a);
    252.   

int BN_num_bits(const BIGNUM *a)
	{
	int i = a->top - 1;
	bn_check_top(a);
	if (BN_is_zero(a)) return 0;
	return ((i*BN_BITS2) + BN_num_bits_word(a->d[i]));
	}
['static int compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh)\n\t{\n\tBN_CTX *ctx=NULL;\n\tBN_MONT_CTX *mont=NULL;\n\tBIGNUM *tmp;\n\tint ret= -1;\n        int check_result;\n\tif (BN_num_bits(dh->p) > OPENSSL_DH_MAX_MODULUS_BITS)\n\t\t{\n\t\tDHerr(DH_F_COMPUTE_KEY,DH_R_MODULUS_TOO_LARGE);\n\t\tgoto err;\n\t\t}\n\tctx = BN_CTX_new();\n\tif (ctx == NULL) goto err;\n\tBN_CTX_start(ctx);\n\ttmp = BN_CTX_get(ctx);\n\tif (dh->priv_key == NULL)\n\t\t{\n\t\tDHerr(DH_F_COMPUTE_KEY,DH_R_NO_PRIVATE_VALUE);\n\t\tgoto err;\n\t\t}\n\tif (dh->flags & DH_FLAG_CACHE_MONT_P)\n\t\t{\n\t\tmont = BN_MONT_CTX_set_locked(&dh->method_mont_p,\n\t\t\t\tCRYPTO_LOCK_DH, dh->p, ctx);\n\t\tif ((dh->flags & DH_FLAG_NO_EXP_CONSTTIME) == 0)\n\t\t\t{\n\t\t\tBN_set_flags(dh->priv_key, BN_FLG_CONSTTIME);\n\t\t\t}\n\t\tif (!mont)\n\t\t\tgoto err;\n\t\t}\n        if (!DH_check_pub_key(dh, pub_key, &check_result) || check_result)\n\t\t{\n\t\tDHerr(DH_F_COMPUTE_KEY,DH_R_INVALID_PUBKEY);\n\t\tgoto err;\n\t\t}\n\tif (!dh->meth->bn_mod_exp(dh, tmp, pub_key, dh->priv_key,dh->p,ctx,mont))\n\t\t{\n\t\tDHerr(DH_F_COMPUTE_KEY,ERR_R_BN_LIB);\n\t\tgoto err;\n\t\t}\n\tret=BN_bn2bin(tmp,key);\nerr:\n\tif (ctx != NULL)\n\t\t{\n\t\tBN_CTX_end(ctx);\n\t\tBN_CTX_free(ctx);\n\t\t}\n\treturn(ret);\n\t}', 'BIGNUM *BN_CTX_get(BN_CTX *ctx)\n\t{\n\tBIGNUM *ret;\n\tCTXDBG_ENTRY("BN_CTX_get", ctx);\n\tif(ctx->err_stack || ctx->too_many) return NULL;\n\tif((ret = BN_POOL_get(&ctx->pool)) == NULL)\n\t\t{\n\t\tctx->too_many = 1;\n\t\tBNerr(BN_F_BN_CTX_GET,BN_R_TOO_MANY_TEMPORARY_VARIABLES);\n\t\treturn NULL;\n\t\t}\n\tBN_zero(ret);\n\tctx->used++;\n\tCTXDBG_RET(ctx, ret);\n\treturn ret;\n\t}', 'int BN_set_word(BIGNUM *a, BN_ULONG w)\n\t{\n\tbn_check_top(a);\n\tif (bn_expand(a,(int)sizeof(BN_ULONG)*8) == NULL) return(0);\n\ta->neg = 0;\n\ta->d[0] = w;\n\ta->top = (w ? 1 : 0);\n\tbn_check_top(a);\n\treturn(1);\n\t}', 'int BN_bn2bin(const BIGNUM *a, unsigned char *to)\n\t{\n\tint n,i;\n\tBN_ULONG l;\n\tbn_check_top(a);\n\tn=i=BN_num_bytes(a);\n\twhile (i--)\n\t\t{\n\t\tl=a->d[i/BN_BYTES];\n\t\t*(to++)=(unsigned char)(l>>(8*(i%BN_BYTES)))&0xff;\n\t\t}\n\treturn(n);\n\t}', 'int BN_num_bits(const BIGNUM *a)\n\t{\n\tint i = a->top - 1;\n\tbn_check_top(a);\n\tif (BN_is_zero(a)) return 0;\n\treturn ((i*BN_BITS2) + BN_num_bits_word(a->d[i]));\n\t}']