crypto/ec/ec_curve.c:801: error: BUFFER_OVERRUN_L3
  Offset: [-7, +oo] (⇐ [0, 1] + [-7, +oo]) Size: 61 by call to `ec_group_new_GF2m_from_hex`.
Showing all 9 steps of the trace


crypto/ec/ec_curve.c:801:9: Call
799.   	
800.   	case EC_GROUP_X9_62_CHAR2_239V2:
801.   		ret = ec_group_new_GF2m_from_hex(_EC_GROUP_X9_62_CHAR2_239V2);
               ^
802.   		break;
803.   	

crypto/ec/ec_curve.c:537:1: Parameter `*prime_in`
  535.   	}
  536.   
  537. > static EC_GROUP *ec_group_new_GF2m_from_hex(const char *prime_in,
  538.   	    const char *a_in, const char *b_in,
  539.   	    const char *x_in, const char *y_in, const char *order_in, const BN_ULONG cofac_in)

crypto/ec/ec_curve.c:551:7: Call
  549.   		(x = BN_new()) == NULL || (y = BN_new()) == NULL || (order = BN_new()) == NULL) goto bn_err;
  550.   	
  551.   	if (!BN_hex2bn(&prime, prime_in)) goto bn_err;
               ^
  552.   	if (!BN_hex2bn(&a, a_in)) goto bn_err;
  553.   	if (!BN_hex2bn(&b, b_in)) goto bn_err;

crypto/bn/bn_print.c:168:7: <Offset trace>
166.   	if (*a == '-') { neg=1; a++; }
167.   
168.   	for (i=0; isxdigit((unsigned char) a[i]); i++)
             ^
169.   		;
170.   

crypto/bn/bn_print.c:168:7: Assignment
    166.   	if (*a == '-') { neg=1; a++; }
    167.   
    168.   	for (i=0; isxdigit((unsigned char) a[i]); i++)
                 ^
    169.   		;
    170.   

crypto/bn/bn_print.c:188:2: Assignment
    186.   	if (bn_expand(ret,i*4) == NULL) goto err;
    187.   
    188.   	j=i; /* least significant 'hex' */
            ^
    189.   	m=0;
    190.   	h=0;

crypto/bn/bn_print.c:157:1: <Length trace>
155.   	}
156.   
157. > int BN_hex2bn(BIGNUM **bn, const char *a)
158.   	{
159.   	BIGNUM *ret=NULL;

crypto/bn/bn_print.c:157:1: Parameter `*a`
    155.   	}
    156.   
    157. > int BN_hex2bn(BIGNUM **bn, const char *a)
    158.   	{
    159.   	BIGNUM *ret=NULL;

crypto/bn/bn_print.c:197:6: Array access: Offset: [-7, +oo] (⇐ [0, 1] + [-7, +oo]) Size: 61 by call to `ec_group_new_GF2m_from_hex` 
    195.   		for (;;)
    196.   			{
    197.   			c=a[j-m];
                ^
    198.   			if ((c >= '0') && (c <= '9')) k=c-'0';
    199.   			else if ((c >= 'a') && (c <= 'f')) k=c-'a'+10;

int BN_hex2bn(BIGNUM **bn, const char *a)
	{
	BIGNUM *ret=NULL;
	BN_ULONG l=0;
	int neg=0,h,m,i,j,k,c;
	int num;
	if ((a == NULL) || (*a == '\0')) return(0);
	if (*a == '-') { neg=1; a++; }
	for (i=0; isxdigit((unsigned char) a[i]); i++)
		;
	num=i+neg;
	if (bn == NULL) return(num);
	if (*bn == NULL)
		{
		if ((ret=BN_new()) == NULL) return(0);
		}
	else
		{
		ret= *bn;
		BN_zero(ret);
		}
	if (bn_expand(ret,i*4) == NULL) goto err;
	j=i;
	m=0;
	h=0;
	while (j > 0)
		{
		m=((BN_BYTES*2) <= j)?(BN_BYTES*2):j;
		l=0;
		for (;;)
			{
			c=a[j-m];
			if ((c >= '0') && (c <= '9')) k=c-'0';
			else if ((c >= 'a') && (c <= 'f')) k=c-'a'+10;
			else if ((c >= 'A') && (c <= 'F')) k=c-'A'+10;
			else k=0;
			l=(l<<4)|k;
			if (--m <= 0)
				{
				ret->d[h++]=l;
				break;
				}
			}
		j-=(BN_BYTES*2);
		}
	ret->top=h;
	bn_fix_top(ret);
	ret->neg=neg;
	*bn=ret;
	return(num);
err:
	if (*bn == NULL) BN_free(ret);
	return(0);
	}
['EC_GROUP *EC_GROUP_new_by_name(int name)\n\t{\n\tEC_GROUP *ret = NULL;\n\tswitch (name)\n\t\t{\n\tcase EC_GROUP_NO_CURVE:\n\t\treturn NULL;\n\tcase EC_GROUP_SECG_PRIME_112R1:\n\tcase EC_GROUP_WTLS_6:\n\t\tret = ec_group_new_GFp_from_hex(_EC_GROUP_SECG_PRIME_112R1);\n\t\tbreak;\n\tcase EC_GROUP_SECG_PRIME_112R2:\n\t\tret = ec_group_new_GFp_from_hex(_EC_GROUP_SECG_PRIME_112R2);\n\t\tbreak;\n\tcase EC_GROUP_WTLS_8:\n\t\tret = ec_group_new_GFp_from_hex(_EC_GROUP_WTLS_8);\n\t\tbreak;\n\tcase EC_GROUP_SECG_PRIME_128R1:\n\t\tret = ec_group_new_GFp_from_hex(_EC_GROUP_SECG_PRIME_128R1);\n\t\tbreak;\n\tcase EC_GROUP_SECG_PRIME_128R2:\n\t\tret = ec_group_new_GFp_from_hex(_EC_GROUP_SECG_PRIME_128R2);\n\t\tbreak;\n\tcase EC_GROUP_SECG_PRIME_160K1:\n\t\tret = ec_group_new_GFp_from_hex(_EC_GROUP_SECG_PRIME_160K1);\n\t\tbreak;\n\tcase EC_GROUP_SECG_PRIME_160R1:\n\t\tret = ec_group_new_GFp_from_hex(_EC_GROUP_SECG_PRIME_160R1);\n\t\tbreak;\n\tcase EC_GROUP_SECG_PRIME_160R2:\n\tcase EC_GROUP_WTLS_7:\n\t\tret = ec_group_new_GFp_from_hex(_EC_GROUP_SECG_PRIME_160R2);\n\t\tbreak;\n\tcase EC_GROUP_WTLS_9:\n\t\tret = ec_group_new_GFp_from_hex(_EC_GROUP_WTLS_9);\n\t\tbreak;\n\tcase EC_GROUP_SECG_PRIME_192K1:\n\t\tret = ec_group_new_GFp_from_hex(_EC_GROUP_SECG_PRIME_192K1);\n\t\tbreak;\n\tcase EC_GROUP_X9_62_PRIME_192V1:\n\t\tret = ec_group_new_GFp_from_hex(_EC_GROUP_NIST_PRIME_192);\n\t\tbreak;\n\tcase EC_GROUP_X9_62_PRIME_192V2:\n\t\tret = ec_group_new_GFp_from_hex(_EC_GROUP_X9_62_PRIME_192V2);\n\t\tbreak;\n\tcase EC_GROUP_X9_62_PRIME_192V3:\n\t\tret = ec_group_new_GFp_from_hex(_EC_GROUP_X9_62_PRIME_192V3);\n\t\tbreak;\n\tcase EC_GROUP_SECG_PRIME_224K1:\n\t\tret = ec_group_new_GFp_from_hex(_EC_GROUP_SECG_PRIME_224K1);\n\t\tbreak;\n\tcase EC_GROUP_SECG_PRIME_224R1:\n\t\tret = ec_group_new_GFp_from_hex(_EC_GROUP_NIST_PRIME_224);\n\t\tbreak;\n\tcase EC_GROUP_WTLS_12:\n\t\tret = ec_group_new_GFp_from_hex(_EC_GROUP_WTLS_12);\n\t\tbreak;\n\tcase EC_GROUP_X9_62_PRIME_239V1:\n\t\tret = ec_group_new_GFp_from_hex(_EC_GROUP_X9_62_PRIME_239V1);\n\t\tbreak;\n\tcase EC_GROUP_X9_62_PRIME_239V2:\n\t\tret = ec_group_new_GFp_from_hex(_EC_GROUP_X9_62_PRIME_239V2);\n\t\tbreak;\n\tcase EC_GROUP_X9_62_PRIME_239V3:\n\t\tret = ec_group_new_GFp_from_hex(_EC_GROUP_X9_62_PRIME_239V3);\n\t\tbreak;\n\tcase EC_GROUP_SECG_PRIME_256K1:\n\t\tret = ec_group_new_GFp_from_hex(_EC_GROUP_SECG_PRIME_256K1);\n\t\tbreak;\n\tcase EC_GROUP_SECG_PRIME_256R1:\n\t\tret = ec_group_new_GFp_from_hex(_EC_GROUP_X9_62_PRIME_256V1);\n\t\tbreak;\n\tcase EC_GROUP_SECG_PRIME_384R1:\n\t\tret = ec_group_new_GFp_from_hex(_EC_GROUP_NIST_PRIME_384);\n\t\tbreak;\n\tcase EC_GROUP_SECG_PRIME_521R1:\n\t\tret = ec_group_new_GFp_from_hex(_EC_GROUP_NIST_PRIME_521);\n\t\tbreak;\n\tcase EC_GROUP_SECG_CHAR2_113R1:\n\tcase EC_GROUP_WTLS_4:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_SECG_CHAR2_113R1);\n\t\tbreak;\n\tcase EC_GROUP_SECG_CHAR2_113R2:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_SECG_CHAR2_113R2);\n\t\tbreak;\n\tcase EC_GROUP_WTLS_1:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_WTLS_1);\n\t\tbreak;\n\tcase EC_GROUP_SECG_CHAR2_131R1:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_SECG_CHAR2_131R1);\n\t\tbreak;\n\tcase EC_GROUP_SECG_CHAR2_131R2:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_SECG_CHAR2_131R2);\n\t\tbreak;\n\tcase EC_GROUP_SECG_CHAR2_163K1:\n\tcase EC_GROUP_WTLS_3:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_SECG_CHAR2_163K1);\n\t\tbreak;\n\tcase EC_GROUP_SECG_CHAR2_163R1:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_SECG_CHAR2_163R1);\n\t\tbreak;\n\tcase EC_GROUP_SECG_CHAR2_163R2:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_SECG_CHAR2_163R2);\n\t\tbreak;\n\tcase EC_GROUP_X9_62_CHAR2_163V1:\n\tcase EC_GROUP_WTLS_5:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_X9_62_CHAR2_163V1);\n\t\tbreak;\n\tcase EC_GROUP_X9_62_CHAR2_163V2:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_X9_62_CHAR2_163V2);\n\t\tbreak;\n\tcase EC_GROUP_X9_62_CHAR2_163V3:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_X9_62_CHAR2_163V3);\n\t\tbreak;\n\tcase EC_GROUP_X9_62_CHAR2_176V1:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_X9_62_CHAR2_176V1);\n\t\tbreak;\n\tcase EC_GROUP_X9_62_CHAR2_191V1:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_X9_62_CHAR2_191V1);\n\t\tbreak;\n\tcase EC_GROUP_X9_62_CHAR2_191V2:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_X9_62_CHAR2_191V2);\n\t\tbreak;\n\tcase EC_GROUP_X9_62_CHAR2_191V3:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_X9_62_CHAR2_191V3);\n\t\tbreak;\n\tcase EC_GROUP_SECG_CHAR2_193R1:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_SECG_CHAR2_193R1);\n\t\tbreak;\n\tcase EC_GROUP_SECG_CHAR2_193R2:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_SECG_CHAR2_193R2);\n\t\tbreak;\n\tcase EC_GROUP_X9_62_CHAR2_208W1:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_X9_62_CHAR2_208W1);\n\t\tbreak;\n\tcase EC_GROUP_SECG_CHAR2_233K1:\n\tcase EC_GROUP_WTLS_10:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_SECG_CHAR2_233K1);\n\t\tbreak;\n\tcase EC_GROUP_SECG_CHAR2_233R1:\n\tcase EC_GROUP_WTLS_11:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_SECG_CHAR2_233R1);\n\t\tbreak;\n\tcase EC_GROUP_SECG_CHAR2_239K1:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_SECG_CHAR2_239K1);\n\t\tbreak;\n\tcase EC_GROUP_X9_62_CHAR2_239V1:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_X9_62_CHAR2_239V1);\n\t\tbreak;\n\tcase EC_GROUP_X9_62_CHAR2_239V2:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_X9_62_CHAR2_239V2);\n\t\tbreak;\n\tcase EC_GROUP_X9_62_CHAR2_239V3:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_X9_62_CHAR2_239V3);\n\t\tbreak;\n\tcase EC_GROUP_X9_62_CHAR2_272W1:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_X9_62_CHAR2_272W1);\n\t\tbreak;\n\tcase EC_GROUP_SECG_CHAR2_283K1:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_SECG_CHAR2_283K1);\n\t\tbreak;\n\tcase EC_GROUP_SECG_CHAR2_283R1:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_SECG_CHAR2_283R1);\n\t\tbreak;\n\tcase EC_GROUP_X9_62_CHAR2_304W1:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_X9_62_CHAR2_304W1);\n\t\tbreak;\n\tcase EC_GROUP_X9_62_CHAR2_359V1:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_X9_62_CHAR2_359V1);\n\t\tbreak;\n\tcase EC_GROUP_X9_62_CHAR2_368W1:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_X9_62_CHAR2_368W1);\n\t\tbreak;\n\tcase EC_GROUP_SECG_CHAR2_409K1:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_SECG_CHAR2_409K1);\n\t\tbreak;\n\tcase EC_GROUP_SECG_CHAR2_409R1:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_SECG_CHAR2_409R1);\n\t\tbreak;\n\tcase EC_GROUP_X9_62_CHAR2_431R1:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_X9_62_CHAR2_431R1);\n\t\tbreak;\n\tcase EC_GROUP_SECG_CHAR2_571K1:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_SECG_CHAR2_571K1);\n\t\tbreak;\n\tcase EC_GROUP_SECG_CHAR2_571R1:\n\t\tret = ec_group_new_GF2m_from_hex(_EC_GROUP_SECG_CHAR2_571R1);\n\t\tbreak;\n\t\t}\n\tif (ret == NULL)\n\t\t{\n\t\tECerr(EC_F_EC_GROUP_NEW_BY_NAME, EC_R_UNKNOWN_GROUP);\n\t\treturn NULL;\n\t\t}\n\tEC_GROUP_set_nid(ret, name);\n\treturn ret;\n\t}', 'static EC_GROUP *ec_group_new_GF2m_from_hex(const char *prime_in,\n\t    const char *a_in, const char *b_in,\n\t    const char *x_in, const char *y_in, const char *order_in, const BN_ULONG cofac_in)\n\t{\n\tEC_GROUP *group=NULL;\n\tEC_POINT *P=NULL;\n\tBN_CTX\t *ctx=NULL;\n\tBIGNUM \t *prime=NULL,*a=NULL,*b=NULL,*x=NULL,*y=NULL,*order=NULL;\n\tint\t ok=0;\n\tif ((ctx = BN_CTX_new()) == NULL) goto bn_err;\n\tif ((prime = BN_new()) == NULL || (a = BN_new()) == NULL || (b = BN_new()) == NULL ||\n\t\t(x = BN_new()) == NULL || (y = BN_new()) == NULL || (order = BN_new()) == NULL) goto bn_err;\n\tif (!BN_hex2bn(&prime, prime_in)) goto bn_err;\n\tif (!BN_hex2bn(&a, a_in)) goto bn_err;\n\tif (!BN_hex2bn(&b, b_in)) goto bn_err;\n\tif ((group = EC_GROUP_new_curve_GF2m(prime, a, b, ctx)) == NULL) goto err;\n\tif ((P = EC_POINT_new(group)) == NULL) goto err;\n\tif (!BN_hex2bn(&x, x_in)) goto bn_err;\n\tif (!BN_hex2bn(&y, y_in)) goto bn_err;\n\tif (!EC_POINT_set_affine_coordinates_GF2m(group, P, x, y, ctx)) goto err;\n\tif (!BN_hex2bn(&order, order_in)) goto bn_err;\n\tif (!BN_set_word(x, cofac_in)) goto bn_err;\n\tif (!EC_GROUP_set_generator(group, P, order, x)) goto err;\n\tok=1;\nbn_err:\n\tif (!ok)\n\t\tECerr(EC_F_EC_GROUP_NEW_GF2M_FROM_HEX, ERR_R_BN_LIB);\nerr:\n\tif (!ok)\n\t\t{\n\t\tEC_GROUP_free(group);\n\t\tgroup = NULL;\n\t\t}\n\tif (P) \t   EC_POINT_free(P);\n\tif (ctx)   BN_CTX_free(ctx);\n\tif (prime) BN_free(prime);\n\tif (a)     BN_free(a);\n\tif (b)     BN_free(b);\n\tif (order) BN_free(order);\n\tif (x)     BN_free(x);\n\tif (y)     BN_free(y);\n\treturn(group);\n\t}', "int BN_hex2bn(BIGNUM **bn, const char *a)\n\t{\n\tBIGNUM *ret=NULL;\n\tBN_ULONG l=0;\n\tint neg=0,h,m,i,j,k,c;\n\tint num;\n\tif ((a == NULL) || (*a == '\\0')) return(0);\n\tif (*a == '-') { neg=1; a++; }\n\tfor (i=0; isxdigit((unsigned char) a[i]); i++)\n\t\t;\n\tnum=i+neg;\n\tif (bn == NULL) return(num);\n\tif (*bn == NULL)\n\t\t{\n\t\tif ((ret=BN_new()) == NULL) return(0);\n\t\t}\n\telse\n\t\t{\n\t\tret= *bn;\n\t\tBN_zero(ret);\n\t\t}\n\tif (bn_expand(ret,i*4) == NULL) goto err;\n\tj=i;\n\tm=0;\n\th=0;\n\twhile (j > 0)\n\t\t{\n\t\tm=((BN_BYTES*2) <= j)?(BN_BYTES*2):j;\n\t\tl=0;\n\t\tfor (;;)\n\t\t\t{\n\t\t\tc=a[j-m];\n\t\t\tif ((c >= '0') && (c <= '9')) k=c-'0';\n\t\t\telse if ((c >= 'a') && (c <= 'f')) k=c-'a'+10;\n\t\t\telse if ((c >= 'A') && (c <= 'F')) k=c-'A'+10;\n\t\t\telse k=0;\n\t\t\tl=(l<<4)|k;\n\t\t\tif (--m <= 0)\n\t\t\t\t{\n\t\t\t\tret->d[h++]=l;\n\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\tj-=(BN_BYTES*2);\n\t\t}\n\tret->top=h;\n\tbn_fix_top(ret);\n\tret->neg=neg;\n\t*bn=ret;\n\treturn(num);\nerr:\n\tif (*bn == NULL) BN_free(ret);\n\treturn(0);\n\t}"]