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


crypto/ec/ec_curve.c:124:10: Call
122.   
123.   	case EC_GROUP_NIST_PRIME_384:
124.   		return ec_group_new_GFp_from_hex(
                ^
125.   			"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFF",
126.   			"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFC",

crypto/ec/ec_curve.c:62:1: Parameter `*prime_in`
  60.   #include <openssl/asn1t.h>
  61.   
  62. > static EC_GROUP *ec_group_new_GFp_from_hex(const char *prime_in,
  63.   	    const char *a_in, const char *b_in,
  64.   	    const char *x_in, const int y_bit, const char *order_in)

crypto/ec/ec_curve.c:76:7: Call
  74.   		(x = BN_new()) == NULL || (order = BN_new()) == NULL) goto bn_err;
  75.   	
  76.   	if (!BN_hex2bn(&prime, prime_in)) goto bn_err;
              ^
  77.   	if (!BN_hex2bn(&a, a_in)) goto bn_err;
  78.   	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: 97 by call to `ec_group_new_GFp_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_NIST_PRIME_224:\n\t\treturn ec_group_new_GFp_from_hex(\n\t\t\t"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001",\n\t\t\t"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE",\n\t\t\t"B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4",\n\t\t\t"B70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21",0,\n\t\t\t"FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D");\n\tcase EC_GROUP_NIST_PRIME_384:\n\t\treturn ec_group_new_GFp_from_hex(\n\t\t\t"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFF",\n\t\t\t"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFC",\n\t\t\t"B3312FA7E23EE7E4988E056BE3F82D19181D9C6EFE8141120314088F5013875AC656398D8A2ED19D2A85C8EDD3EC2AEF",\n\t\t\t"AA87CA22BE8B05378EB1C71EF320AD746E1D3B628BA79B9859F741E082542A385502F25DBF55296C3A545E3872760AB7",1,\n\t\t\t"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7634D81F4372DDF581A0DB248B0A77AECEC196ACCC52973");\n\tcase EC_GROUP_NIST_PRIME_521:\n\t\treturn ec_group_new_GFp_from_hex(\n\t\t\t"1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"\n\t\t\t"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF",\n\t\t\t"1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"\n\t\t\t"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC",\n\t\t\t"051953EB9618E1C9A1F929A21A0B68540EEA2DA725B99B"\n\t\t\t"315F3B8B489918EF109E156193951EC7E937B1652C0BD3BB1BF073573DF883D2C34F1EF451FD46B503F00",\n\t\t\t"C6858E06B70404E9CD9E3ECB662395B4429C648139053F"\n\t\t\t"B521F828AF606B4D3DBAA14B5E77EFE75928FE1DC127A2FFA8DE3348B3C1856A429BF97E7E31C2E5BD66",0,\n\t\t\t"1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"\n\t\t\t"FFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386409");\n\tcase EC_GROUP_NIST_PRIME_192:\n\tcase EC_GROUP_X9_62_PRIME_192V1:\n\t\tret = ec_group_new_GFp_from_hex(\n\t\t\t"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF",\n\t\t\t"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC",\n\t\t\t"64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1",\n\t\t\t"188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF1012",1,\n\t\t\t"FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831");\n\t\tEC_GROUP_set_nid(ret, NID_X9_62_prime192v1);\n\t\treturn ret;\n\tcase EC_GROUP_X9_62_PRIME_192V2:\n\t\tret = ec_group_new_GFp_from_hex(\n\t\t\t"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF",\n\t\t\t"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC",\n\t\t\t"CC22D6DFB95C6B25E49C0D6364A4E5980C393AA21668D953",\n\t\t\t"EEA2BAE7E1497842F2DE7769CFE9C989C072AD696F48034A",1,\n\t\t\t"FFFFFFFFFFFFFFFFFFFFFFFE5FB1A724DC80418648D8DD31");\n\t\tEC_GROUP_set_nid(ret, NID_X9_62_prime192v2);\n\t\treturn ret;\n\tcase EC_GROUP_X9_62_PRIME_192V3:\n\t\tret = ec_group_new_GFp_from_hex(\n\t\t\t"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF",\n\t\t\t"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC",\n\t\t\t"22123DC2395A05CAA7423DAECCC94760A7D462256BD56916",\n\t\t\t"7D29778100C65A1DA1783716588DCE2B8B4AEE8E228F1896",0,\n\t\t\t"FFFFFFFFFFFFFFFFFFFFFFFF7A62D031C83F4294F640EC13");\n\t\tEC_GROUP_set_nid(ret, NID_X9_62_prime192v3);\n\t\treturn ret;\n\tcase EC_GROUP_X9_62_PRIME_239V1:\n\t\tret = ec_group_new_GFp_from_hex(\n\t\t\t"7FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF8000000000007FFFFFFFFFFF",\n\t\t\t"7FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF8000000000007FFFFFFFFFFC",\n\t\t\t"6B016C3BDCF18941D0D654921475CA71A9DB2FB27D1D37796185C2942C0A",\n\t\t\t"0FFA963CDCA8816CCC33B8642BEDF905C3D358573D3F27FBBD3B3CB9AAAF",0,\n\t\t\t"7FFFFFFFFFFFFFFFFFFFFFFF7FFFFF9E5E9A9F5D9071FBD1522688909D0B");\n\t\tEC_GROUP_set_nid(ret, NID_X9_62_prime239v1);\n\t\treturn ret;\n\tcase EC_GROUP_X9_62_PRIME_239V2:\n\t\tret = ec_group_new_GFp_from_hex(\n\t\t\t"7FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF8000000000007FFFFFFFFFFF",\n\t\t\t"7FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF8000000000007FFFFFFFFFFC",\n\t\t\t"617FAB6832576CBBFED50D99F0249C3FEE58B94BA0038C7AE84C8C832F2C",\n\t\t\t"38AF09D98727705120C921BB5E9E26296A3CDCF2F35757A0EAFD87B830E7",0,\n\t\t\t"7FFFFFFFFFFFFFFFFFFFFFFF800000CFA7E8594377D414C03821BC582063");\n\t\tEC_GROUP_set_nid(ret, NID_X9_62_prime239v2);\n\t\treturn ret;\n\tcase EC_GROUP_X9_62_PRIME_239V3:\n\t\tret = ec_group_new_GFp_from_hex(\n\t\t\t"7FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF8000000000007FFFFFFFFFFF",\n\t\t\t"7FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF8000000000007FFFFFFFFFFC",\n\t\t\t"255705FA2A306654B1F4CB03D6A750A30C250102D4988717D9BA15AB6D3E",\n\t\t\t"6768AE8E18BB92CFCF005C949AA2C6D94853D0E660BBF854B1C9505FE95A",1,\n\t\t\t"7FFFFFFFFFFFFFFFFFFFFFFF7FFFFF975DEB41B3A6057C3C432146526551");\n\t\tEC_GROUP_set_nid(ret, NID_X9_62_prime239v3);\n\t\treturn ret;\n\tcase EC_GROUP_NIST_PRIME_256:\n\tcase EC_GROUP_X9_62_PRIME_256V1:\n\t\tret = ec_group_new_GFp_from_hex(\n\t\t\t"FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF",\n\t\t\t"FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC",\n\t\t\t"5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B",\n\t\t\t"6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296",1,\n\t\t\t"FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551");\n\t\tEC_GROUP_set_nid(ret, NID_X9_62_prime256v1);\n\t\treturn ret;\n\t\t}\n\tECerr(EC_F_EC_GROUP_NEW_BY_NAME, EC_R_UNKNOWN_GROUP);\n\treturn NULL;\n\t}', 'static EC_GROUP *ec_group_new_GFp_from_hex(const char *prime_in,\n\t    const char *a_in, const char *b_in,\n\t    const char *x_in, const int y_bit, const char *order_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,*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 || (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_GFp(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 (!EC_POINT_set_compressed_coordinates_GFp(group, P, x, y_bit, ctx)) goto err;\n\tif (!BN_hex2bn(&order, order_in)) goto bn_err;\n\tif (!EC_GROUP_set_generator(group, P, order, BN_value_one())) goto err;\n\tok=1;\nbn_err:\n\tif (!ok)\n\t\tECerr(EC_F_EC_GROUP_NEW_GFP_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\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}"]