Loading crypto/x509v3/v3_alt.c +21 −11 Original line number Original line Diff line number Diff line Loading @@ -70,32 +70,39 @@ STACK_OF(CONF_VALUE) *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method, int i; int i; switch (gen->type) { switch (gen->type) { case GEN_OTHERNAME: case GEN_OTHERNAME: X509V3_add_value("othername", "<unsupported>", &ret); if (!X509V3_add_value("othername", "<unsupported>", &ret)) return NULL; break; break; case GEN_X400: case GEN_X400: X509V3_add_value("X400Name", "<unsupported>", &ret); if (!X509V3_add_value("X400Name", "<unsupported>", &ret)) return NULL; break; break; case GEN_EDIPARTY: case GEN_EDIPARTY: X509V3_add_value("EdiPartyName", "<unsupported>", &ret); if (!X509V3_add_value("EdiPartyName", "<unsupported>", &ret)) return NULL; break; break; case GEN_EMAIL: case GEN_EMAIL: X509V3_add_value_uchar("email", gen->d.ia5->data, &ret); if (!X509V3_add_value_uchar("email", gen->d.ia5->data, &ret)) return NULL; break; break; case GEN_DNS: case GEN_DNS: X509V3_add_value_uchar("DNS", gen->d.ia5->data, &ret); if (!X509V3_add_value_uchar("DNS", gen->d.ia5->data, &ret)) return NULL; break; break; case GEN_URI: case GEN_URI: X509V3_add_value_uchar("URI", gen->d.ia5->data, &ret); if (!X509V3_add_value_uchar("URI", gen->d.ia5->data, &ret)) return NULL; break; break; case GEN_DIRNAME: case GEN_DIRNAME: X509_NAME_oneline(gen->d.dirn, oline, 256); if (X509_NAME_oneline(gen->d.dirn, oline, 256) == NULL X509V3_add_value("DirName", oline, &ret); || !X509V3_add_value("DirName", oline, &ret)) return NULL; break; break; case GEN_IPADD: case GEN_IPADD: Loading @@ -113,15 +120,18 @@ STACK_OF(CONF_VALUE) *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method, strcat(oline, ":"); strcat(oline, ":"); } } } else { } else { X509V3_add_value("IP Address", "<invalid>", &ret); if (!X509V3_add_value("IP Address", "<invalid>", &ret)) return NULL; break; break; } } X509V3_add_value("IP Address", oline, &ret); if (!X509V3_add_value("IP Address", oline, &ret)) return NULL; break; break; case GEN_RID: case GEN_RID: i2t_ASN1_OBJECT(oline, 256, gen->d.rid); i2t_ASN1_OBJECT(oline, 256, gen->d.rid); X509V3_add_value("Registered ID", oline, &ret); if (!X509V3_add_value("Registered ID", oline, &ret)) return NULL; break; break; } } return ret; return ret; Loading crypto/x509v3/v3_info.c +22 −15 Original line number Original line Diff line number Diff line Loading @@ -58,29 +58,30 @@ ASN1_ITEM_TEMPLATE_END(AUTHORITY_INFO_ACCESS) IMPLEMENT_ASN1_FUNCTIONS(AUTHORITY_INFO_ACCESS) IMPLEMENT_ASN1_FUNCTIONS(AUTHORITY_INFO_ACCESS) static STACK_OF(CONF_VALUE) *i2v_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD static STACK_OF(CONF_VALUE) *i2v_AUTHORITY_INFO_ACCESS( *method, AUTHORITY_INFO_ACCESS X509V3_EXT_METHOD *method, AUTHORITY_INFO_ACCESS *ainfo, *ainfo, STACK_OF(CONF_VALUE) STACK_OF(CONF_VALUE) *ret) *ret) { { ACCESS_DESCRIPTION *desc; ACCESS_DESCRIPTION *desc; int i, nlen; int i, nlen; char objtmp[80], *ntmp; char objtmp[80], *ntmp; CONF_VALUE *vtmp; CONF_VALUE *vtmp; STACK_OF(CONF_VALUE) *tret = ret; for (i = 0; i < sk_ACCESS_DESCRIPTION_num(ainfo); i++) { for (i = 0; i < sk_ACCESS_DESCRIPTION_num(ainfo); i++) { STACK_OF(CONF_VALUE) *tmp; desc = sk_ACCESS_DESCRIPTION_value(ainfo, i); desc = sk_ACCESS_DESCRIPTION_value(ainfo, i); ret = i2v_GENERAL_NAME(method, desc->location, ret); tmp = i2v_GENERAL_NAME(method, desc->location, tret); if (!ret) if (tmp == NULL) break; goto err; vtmp = sk_CONF_VALUE_value(ret, i); tret = tmp; vtmp = sk_CONF_VALUE_value(tret, i); i2t_ASN1_OBJECT(objtmp, sizeof objtmp, desc->method); i2t_ASN1_OBJECT(objtmp, sizeof objtmp, desc->method); nlen = strlen(objtmp) + strlen(vtmp->name) + 5; nlen = strlen(objtmp) + strlen(vtmp->name) + 5; ntmp = OPENSSL_malloc(nlen); ntmp = OPENSSL_malloc(nlen); if (ntmp == NULL) { if (ntmp == NULL) X509V3err(X509V3_F_I2V_AUTHORITY_INFO_ACCESS, goto err; ERR_R_MALLOC_FAILURE); return NULL; } OPENSSL_strlcpy(ntmp, objtmp, nlen); OPENSSL_strlcpy(ntmp, objtmp, nlen); OPENSSL_strlcat(ntmp, " - ", nlen); OPENSSL_strlcat(ntmp, " - ", nlen); OPENSSL_strlcat(ntmp, vtmp->name, nlen); OPENSSL_strlcat(ntmp, vtmp->name, nlen); Loading @@ -88,9 +89,15 @@ static STACK_OF(CONF_VALUE) *i2v_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD vtmp->name = ntmp; vtmp->name = ntmp; } } if (!ret) if (ret == NULL && tret == NULL) return sk_CONF_VALUE_new_null(); return sk_CONF_VALUE_new_null(); return ret; return tret; err: X509V3err(X509V3_F_I2V_AUTHORITY_INFO_ACCESS, ERR_R_MALLOC_FAILURE); if (ret == NULL && tret != NULL) sk_CONF_VALUE_pop_free(tret, X509V3_conf_free); return NULL; } } static AUTHORITY_INFO_ACCESS *v2i_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD static AUTHORITY_INFO_ACCESS *v2i_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD Loading Loading
crypto/x509v3/v3_alt.c +21 −11 Original line number Original line Diff line number Diff line Loading @@ -70,32 +70,39 @@ STACK_OF(CONF_VALUE) *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method, int i; int i; switch (gen->type) { switch (gen->type) { case GEN_OTHERNAME: case GEN_OTHERNAME: X509V3_add_value("othername", "<unsupported>", &ret); if (!X509V3_add_value("othername", "<unsupported>", &ret)) return NULL; break; break; case GEN_X400: case GEN_X400: X509V3_add_value("X400Name", "<unsupported>", &ret); if (!X509V3_add_value("X400Name", "<unsupported>", &ret)) return NULL; break; break; case GEN_EDIPARTY: case GEN_EDIPARTY: X509V3_add_value("EdiPartyName", "<unsupported>", &ret); if (!X509V3_add_value("EdiPartyName", "<unsupported>", &ret)) return NULL; break; break; case GEN_EMAIL: case GEN_EMAIL: X509V3_add_value_uchar("email", gen->d.ia5->data, &ret); if (!X509V3_add_value_uchar("email", gen->d.ia5->data, &ret)) return NULL; break; break; case GEN_DNS: case GEN_DNS: X509V3_add_value_uchar("DNS", gen->d.ia5->data, &ret); if (!X509V3_add_value_uchar("DNS", gen->d.ia5->data, &ret)) return NULL; break; break; case GEN_URI: case GEN_URI: X509V3_add_value_uchar("URI", gen->d.ia5->data, &ret); if (!X509V3_add_value_uchar("URI", gen->d.ia5->data, &ret)) return NULL; break; break; case GEN_DIRNAME: case GEN_DIRNAME: X509_NAME_oneline(gen->d.dirn, oline, 256); if (X509_NAME_oneline(gen->d.dirn, oline, 256) == NULL X509V3_add_value("DirName", oline, &ret); || !X509V3_add_value("DirName", oline, &ret)) return NULL; break; break; case GEN_IPADD: case GEN_IPADD: Loading @@ -113,15 +120,18 @@ STACK_OF(CONF_VALUE) *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method, strcat(oline, ":"); strcat(oline, ":"); } } } else { } else { X509V3_add_value("IP Address", "<invalid>", &ret); if (!X509V3_add_value("IP Address", "<invalid>", &ret)) return NULL; break; break; } } X509V3_add_value("IP Address", oline, &ret); if (!X509V3_add_value("IP Address", oline, &ret)) return NULL; break; break; case GEN_RID: case GEN_RID: i2t_ASN1_OBJECT(oline, 256, gen->d.rid); i2t_ASN1_OBJECT(oline, 256, gen->d.rid); X509V3_add_value("Registered ID", oline, &ret); if (!X509V3_add_value("Registered ID", oline, &ret)) return NULL; break; break; } } return ret; return ret; Loading
crypto/x509v3/v3_info.c +22 −15 Original line number Original line Diff line number Diff line Loading @@ -58,29 +58,30 @@ ASN1_ITEM_TEMPLATE_END(AUTHORITY_INFO_ACCESS) IMPLEMENT_ASN1_FUNCTIONS(AUTHORITY_INFO_ACCESS) IMPLEMENT_ASN1_FUNCTIONS(AUTHORITY_INFO_ACCESS) static STACK_OF(CONF_VALUE) *i2v_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD static STACK_OF(CONF_VALUE) *i2v_AUTHORITY_INFO_ACCESS( *method, AUTHORITY_INFO_ACCESS X509V3_EXT_METHOD *method, AUTHORITY_INFO_ACCESS *ainfo, *ainfo, STACK_OF(CONF_VALUE) STACK_OF(CONF_VALUE) *ret) *ret) { { ACCESS_DESCRIPTION *desc; ACCESS_DESCRIPTION *desc; int i, nlen; int i, nlen; char objtmp[80], *ntmp; char objtmp[80], *ntmp; CONF_VALUE *vtmp; CONF_VALUE *vtmp; STACK_OF(CONF_VALUE) *tret = ret; for (i = 0; i < sk_ACCESS_DESCRIPTION_num(ainfo); i++) { for (i = 0; i < sk_ACCESS_DESCRIPTION_num(ainfo); i++) { STACK_OF(CONF_VALUE) *tmp; desc = sk_ACCESS_DESCRIPTION_value(ainfo, i); desc = sk_ACCESS_DESCRIPTION_value(ainfo, i); ret = i2v_GENERAL_NAME(method, desc->location, ret); tmp = i2v_GENERAL_NAME(method, desc->location, tret); if (!ret) if (tmp == NULL) break; goto err; vtmp = sk_CONF_VALUE_value(ret, i); tret = tmp; vtmp = sk_CONF_VALUE_value(tret, i); i2t_ASN1_OBJECT(objtmp, sizeof objtmp, desc->method); i2t_ASN1_OBJECT(objtmp, sizeof objtmp, desc->method); nlen = strlen(objtmp) + strlen(vtmp->name) + 5; nlen = strlen(objtmp) + strlen(vtmp->name) + 5; ntmp = OPENSSL_malloc(nlen); ntmp = OPENSSL_malloc(nlen); if (ntmp == NULL) { if (ntmp == NULL) X509V3err(X509V3_F_I2V_AUTHORITY_INFO_ACCESS, goto err; ERR_R_MALLOC_FAILURE); return NULL; } OPENSSL_strlcpy(ntmp, objtmp, nlen); OPENSSL_strlcpy(ntmp, objtmp, nlen); OPENSSL_strlcat(ntmp, " - ", nlen); OPENSSL_strlcat(ntmp, " - ", nlen); OPENSSL_strlcat(ntmp, vtmp->name, nlen); OPENSSL_strlcat(ntmp, vtmp->name, nlen); Loading @@ -88,9 +89,15 @@ static STACK_OF(CONF_VALUE) *i2v_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD vtmp->name = ntmp; vtmp->name = ntmp; } } if (!ret) if (ret == NULL && tret == NULL) return sk_CONF_VALUE_new_null(); return sk_CONF_VALUE_new_null(); return ret; return tret; err: X509V3err(X509V3_F_I2V_AUTHORITY_INFO_ACCESS, ERR_R_MALLOC_FAILURE); if (ret == NULL && tret != NULL) sk_CONF_VALUE_pop_free(tret, X509V3_conf_free); return NULL; } } static AUTHORITY_INFO_ACCESS *v2i_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD static AUTHORITY_INFO_ACCESS *v2i_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD Loading