engines/e_cswift.c:704: error: INTEGER_OVERFLOW_L2
  ([0, `p->top`] - 1):unsigned64 by call to `BN_num_bits`.
Showing all 6 steps of the trace


engines/e_cswift.c:637:11: Call
635.   	/* Prepare the params */
636.   	argument = BN_new();
637.   	result = BN_new();
                 ^
638.   	if(!result || !argument)
639.   		{

crypto/bn/bn_lib.c:310:2: Assignment
  308.   	ret->top=0;
  309.   	ret->neg=0;
  310.   	ret->dmax=0;
          ^
  311.   	ret->d=NULL;
  312.   	bn_check_top(ret);

engines/e_cswift.c:704:19: Call
702.   	arg.nbytes = BN_bn2bin(a, (unsigned char *)argument->d);
703.   	arg.value = (unsigned char *)argument->d;
704.   	res.nbytes = 2 * BN_num_bytes(p);
                         ^
705.   	memset(result->d, 0, res.nbytes);
706.   	res.value = (unsigned char *)result->d;

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, p->top] - 1):unsigned64 by call to `BN_num_bits` 
  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 cswift_mod_exp_crt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,\n\t\t\tconst BIGNUM *q, const BIGNUM *dmp1,\n\t\t\tconst BIGNUM *dmq1, const BIGNUM *iqmp, BN_CTX *ctx)\n\t{\n\tSW_STATUS sw_status;\n\tSW_LARGENUMBER arg, res;\n\tSW_PARAM sw_param;\n\tSW_CONTEXT_HANDLE hac;\n\tBIGNUM *result = NULL;\n\tBIGNUM *argument = NULL;\n\tint to_return = 0;\n\tint acquired = 0;\n\tsw_param.up.crt.p.value = NULL;\n\tsw_param.up.crt.q.value = NULL;\n\tsw_param.up.crt.dmp1.value = NULL;\n\tsw_param.up.crt.dmq1.value = NULL;\n\tsw_param.up.crt.iqmp.value = NULL;\n\tif(!get_context(&hac))\n\t\t{\n\t\tCSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_UNIT_FAILURE);\n\t\tgoto err;\n\t\t}\n\tacquired = 1;\n\targument = BN_new();\n\tresult = BN_new();\n\tif(!result || !argument)\n\t\t{\n\t\tCSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_BN_CTX_FULL);\n\t\tgoto err;\n\t\t}\n\tsw_param.type = SW_ALG_CRT;\n\tif(!cswift_bn_32copy(&sw_param.up.crt.p, p))\n\t{\n\t\tCSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_BN_EXPAND_FAIL);\n\t\tgoto err;\n\t}\n\tif(!cswift_bn_32copy(&sw_param.up.crt.q, q))\n\t{\n\t\tCSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_BN_EXPAND_FAIL);\n\t\tgoto err;\n\t}\n\tif(!cswift_bn_32copy(&sw_param.up.crt.dmp1, dmp1))\n\t{\n\t\tCSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_BN_EXPAND_FAIL);\n\t\tgoto err;\n\t}\n\tif(!cswift_bn_32copy(&sw_param.up.crt.dmq1, dmq1))\n\t{\n\t\tCSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_BN_EXPAND_FAIL);\n\t\tgoto err;\n\t}\n\tif(!cswift_bn_32copy(&sw_param.up.crt.iqmp, iqmp))\n\t{\n\t\tCSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_BN_EXPAND_FAIL);\n\t\tgoto err;\n\t}\n\tif(\t!bn_wexpand(argument, a->top) ||\n\t\t\t!bn_wexpand(result, p->top + q->top))\n\t\t{\n\t\tCSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_BN_EXPAND_FAIL);\n\t\tgoto err;\n\t\t}\n\tsw_status = p_CSwift_AttachKeyParam(hac, &sw_param);\n\tswitch(sw_status)\n\t\t{\n\tcase SW_OK:\n\t\tbreak;\n\tcase SW_ERR_INPUT_SIZE:\n\t\tCSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_BAD_KEY_SIZE);\n\t\tgoto err;\n\tdefault:\n\t\t{\n\t\tchar tmpbuf[DECIMAL_SIZE(sw_status)+1];\n\t\tCSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_REQUEST_FAILED);\n\t\tsprintf(tmpbuf, "%ld", sw_status);\n\t\tERR_add_error_data(2, "CryptoSwift error number is ",tmpbuf);\n\t\t}\n\t\tgoto err;\n\t\t}\n\targ.nbytes = BN_bn2bin(a, (unsigned char *)argument->d);\n\targ.value = (unsigned char *)argument->d;\n\tres.nbytes = 2 * BN_num_bytes(p);\n\tmemset(result->d, 0, res.nbytes);\n\tres.value = (unsigned char *)result->d;\n\tif((sw_status = p_CSwift_SimpleRequest(hac, SW_CMD_MODEXP_CRT, &arg, 1,\n\t\t&res, 1)) != SW_OK)\n\t\t{\n\t\tchar tmpbuf[DECIMAL_SIZE(sw_status)+1];\n\t\tCSWIFTerr(CSWIFT_F_CSWIFT_MOD_EXP_CRT,CSWIFT_R_REQUEST_FAILED);\n\t\tsprintf(tmpbuf, "%ld", sw_status);\n\t\tERR_add_error_data(2, "CryptoSwift error number is ",tmpbuf);\n\t\tgoto err;\n\t\t}\n\tBN_bin2bn((unsigned char *)result->d, res.nbytes, r);\n\tto_return = 1;\nerr:\n\tif(sw_param.up.crt.p.value)\n\t\tOPENSSL_free(sw_param.up.crt.p.value);\n\tif(sw_param.up.crt.q.value)\n\t\tOPENSSL_free(sw_param.up.crt.q.value);\n\tif(sw_param.up.crt.dmp1.value)\n\t\tOPENSSL_free(sw_param.up.crt.dmp1.value);\n\tif(sw_param.up.crt.dmq1.value)\n\t\tOPENSSL_free(sw_param.up.crt.dmq1.value);\n\tif(sw_param.up.crt.iqmp.value)\n\t\tOPENSSL_free(sw_param.up.crt.iqmp.value);\n\tif(result)\n\t\tBN_free(result);\n\tif(argument)\n\t\tBN_free(argument);\n\tif(acquired)\n\t\trelease_context(hac);\n\treturn to_return;\n\t}', 'BIGNUM *BN_new(void)\n\t{\n\tBIGNUM *ret;\n\tif ((ret=(BIGNUM *)OPENSSL_malloc(sizeof(BIGNUM))) == NULL)\n\t\t{\n\t\tBNerr(BN_F_BN_NEW,ERR_R_MALLOC_FAILURE);\n\t\treturn(NULL);\n\t\t}\n\tret->flags=BN_FLG_MALLOCED;\n\tret->top=0;\n\tret->neg=0;\n\tret->dmax=0;\n\tret->d=NULL;\n\tbn_check_top(ret);\n\treturn(ret);\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}']