diff options
Diffstat (limited to 'src/crypto/x509v3/v3_alt.c')
-rw-r--r-- | src/crypto/x509v3/v3_alt.c | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/src/crypto/x509v3/v3_alt.c b/src/crypto/x509v3/v3_alt.c index cfc1348..e639f45 100644 --- a/src/crypto/x509v3/v3_alt.c +++ b/src/crypto/x509v3/v3_alt.c @@ -596,27 +596,25 @@ static int do_othername(GENERAL_NAME *gen, char *value, X509V3_CTX *ctx) static int do_dirname(GENERAL_NAME *gen, char *value, X509V3_CTX *ctx) { - int ret = 0; - STACK_OF(CONF_VALUE) *sk = NULL; - X509_NAME *nm = X509_NAME_new(); - if (nm == NULL) - goto err; + int ret; + STACK_OF(CONF_VALUE) *sk; + X509_NAME *nm; + if (!(nm = X509_NAME_new())) + return 0; sk = X509V3_get_section(ctx, value); - if (sk == NULL) + if (!sk) { OPENSSL_PUT_ERROR(X509V3, X509V3_R_SECTION_NOT_FOUND); ERR_add_error_data(2, "section=", value); - goto err; + X509_NAME_free(nm); + return 0; } /* FIXME: should allow other character types... */ - if (!X509V3_NAME_from_section(nm, sk, MBSTRING_ASC)) - goto err; - gen->d.dirn = nm; - ret = 1; - -err: + ret = X509V3_NAME_from_section(nm, sk, MBSTRING_ASC); if (!ret) X509_NAME_free(nm); + gen->d.dirn = nm; X509V3_section_free(ctx, sk); + return ret; } |