mirror of
https://github.com/norandom/OpenUltraSAST.git
synced 2026-10-18 20:49:28 +00:00
Harvest 176 isolated vuln-vs-fix functions (109 CVEs, 352 training rows) into benchmarks/pairs/vfc with provenance and a JSONL training manifest. Score the slice as an honesty dashboard (ousast pairs --slice vfc); keep the pair gate on the local fixtures only.
105 lines
3.3 KiB
C
105 lines
3.3 KiB
C
/* Provenance: openssl/openssl GENERAL_NAME_print (fixed).
|
|
* repo: openssl/openssl
|
|
* commit: b2b3b9c9936b91315adc0f3254879cb2fd5ca2bd
|
|
* parent: 1747d4658b3830951068a6a6c1fa2b45c4731fb3
|
|
* commit_url: https://github.com/openssl/openssl/commit/b2b3b9c9936b91315adc0f3254879cb2fd5ca2bd
|
|
* cve: CVE-2021-3712
|
|
* license: OpenSSL License
|
|
* function: GENERAL_NAME_print
|
|
* relpath: crypto/x509/v3_san.c
|
|
*/
|
|
|
|
int GENERAL_NAME_print(BIO *out, GENERAL_NAME *gen)
|
|
{
|
|
char *tmp;
|
|
int nid;
|
|
|
|
switch (gen->type) {
|
|
case GEN_OTHERNAME:
|
|
nid = OBJ_obj2nid(gen->d.otherName->type_id);
|
|
/* Validate the types are as we expect before we use them */
|
|
if ((nid == NID_SRVName
|
|
&& gen->d.otherName->value->type != V_ASN1_IA5STRING)
|
|
|| (nid != NID_SRVName
|
|
&& gen->d.otherName->value->type != V_ASN1_UTF8STRING)) {
|
|
BIO_printf(out, "othername:<unsupported>");
|
|
break;
|
|
}
|
|
|
|
switch (nid) {
|
|
case NID_id_on_SmtpUTF8Mailbox:
|
|
BIO_printf(out, "othername:SmtpUTF8Mailbox:%.*s",
|
|
gen->d.otherName->value->value.utf8string->length,
|
|
gen->d.otherName->value->value.utf8string->data);
|
|
break;
|
|
case NID_XmppAddr:
|
|
BIO_printf(out, "othername:XmppAddr:%.*s",
|
|
gen->d.otherName->value->value.utf8string->length,
|
|
gen->d.otherName->value->value.utf8string->data);
|
|
break;
|
|
case NID_SRVName:
|
|
BIO_printf(out, "othername:SRVName:%.*s",
|
|
gen->d.otherName->value->value.ia5string->length,
|
|
gen->d.otherName->value->value.ia5string->data);
|
|
break;
|
|
case NID_ms_upn:
|
|
BIO_printf(out, "othername:UPN:%.*s",
|
|
gen->d.otherName->value->value.utf8string->length,
|
|
gen->d.otherName->value->value.utf8string->data);
|
|
break;
|
|
case NID_NAIRealm:
|
|
BIO_printf(out, "othername:NAIRealm:%.*s",
|
|
gen->d.otherName->value->value.utf8string->length,
|
|
gen->d.otherName->value->value.utf8string->data);
|
|
break;
|
|
default:
|
|
BIO_printf(out, "othername:<unsupported>");
|
|
break;
|
|
}
|
|
break;
|
|
|
|
case GEN_X400:
|
|
BIO_printf(out, "X400Name:<unsupported>");
|
|
break;
|
|
|
|
case GEN_EDIPARTY:
|
|
/* Maybe fix this: it is supported now */
|
|
BIO_printf(out, "EdiPartyName:<unsupported>");
|
|
break;
|
|
|
|
case GEN_EMAIL:
|
|
BIO_printf(out, "email:");
|
|
ASN1_STRING_print(out, gen->d.ia5);
|
|
break;
|
|
|
|
case GEN_DNS:
|
|
BIO_printf(out, "DNS:");
|
|
ASN1_STRING_print(out, gen->d.ia5);
|
|
break;
|
|
|
|
case GEN_URI:
|
|
BIO_printf(out, "URI:");
|
|
ASN1_STRING_print(out, gen->d.ia5);
|
|
break;
|
|
|
|
case GEN_DIRNAME:
|
|
BIO_printf(out, "DirName:");
|
|
X509_NAME_print_ex(out, gen->d.dirn, 0, XN_FLAG_ONELINE);
|
|
break;
|
|
|
|
case GEN_IPADD:
|
|
tmp = ossl_ipaddr_to_asc(gen->d.ip->data, gen->d.ip->length);
|
|
if (tmp == NULL)
|
|
return 0;
|
|
BIO_printf(out, "IP Address:%s", tmp);
|
|
OPENSSL_free(tmp);
|
|
break;
|
|
|
|
case GEN_RID:
|
|
BIO_printf(out, "Registered ID:");
|
|
i2a_ASN1_OBJECT(out, gen->d.rid);
|
|
break;
|
|
}
|
|
return 1;
|
|
}
|