X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=apps%2Fecparam.c;h=71ae9e7d9b37d599404e8f18aeae073bc34a84d7;hp=e0a56062d340dc7c756e06c243eb9d41e052ec2c;hb=65b1d31df53fecefbf53dedd8fc4f9f64a62a92b;hpb=b499ed06d2afa4e495f0985ba3c571a1e6ee3f69 diff --git a/apps/ecparam.c b/apps/ecparam.c index e0a56062d3..71ae9e7d9b 100644 --- a/apps/ecparam.c +++ b/apps/ecparam.c @@ -352,19 +352,33 @@ bad: if (list_curves) { - int counter=0; + EC_builtin_curve *curves = NULL; + size_t crv_len = 0; + size_t n = 0; + size_t len; - for (;;) + crv_len = EC_get_builtin_curves(NULL, 0); + + curves = OPENSSL_malloc(sizeof(EC_builtin_curve) * crv_len); + + if (curves == NULL) + goto end; + + if (!EC_get_builtin_curves(curves, crv_len)) + { + OPENSSL_free(curves); + goto end; + } + + + for (n = 0; n < crv_len; n++) { const char *comment; const char *sname; - int len, nid = ec_group_index2nid(counter++); - if (!nid) - break; - comment = EC_GROUP_get0_comment(nid); - sname = OBJ_nid2sn(nid); + comment = curves[n].comment; + sname = OBJ_nid2sn(curves[n].nid); if (comment == NULL) - comment = ""; + comment = "CURVE DESCRIPTION NOT AVAILABLE"; if (sname == NULL) sname = ""; @@ -375,6 +389,7 @@ bad: BIO_printf(out, "%s\n", comment); } + OPENSSL_free(curves); ret = 0; goto end; }