diff options
author | jwalch <jeremy.walch@gmail.com> | 2020-12-15 15:00:11 -0500 |
---|---|---|
committer | Tomas Mraz <tmraz@fedoraproject.org> | 2020-12-21 14:38:37 +0100 |
commit | 7a7ed5fc7978309c997804e174914a037777d786 (patch) | |
tree | 73784e68d5e6974f8daef06d33fc842db2d97ff0 /crypto/x509 | |
parent | 3a1ee3c1993c588a22cb80f1d0eb6237f83a1560 (diff) |
Restore v2i_AUTHORITY_INFO_ACCESS() behavior
Fixes #13636
Reviewed-by: Ben Kaduk <kaduk@mit.edu>
Reviewed-by: Tomas Mraz <tmraz@fedoraproject.org>
(Merged from https://github.com/openssl/openssl/pull/13683)
Diffstat (limited to 'crypto/x509')
-rw-r--r-- | crypto/x509/v3_info.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/crypto/x509/v3_info.c b/crypto/x509/v3_info.c index 003f3ce172..053e591088 100644 --- a/crypto/x509/v3_info.c +++ b/crypto/x509/v3_info.c @@ -108,7 +108,7 @@ static AUTHORITY_INFO_ACCESS *v2i_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD ACCESS_DESCRIPTION *acc; int i; const int num = sk_CONF_VALUE_num(nval); - char *ptmp; + char *objtmp, *ptmp; if ((ainfo = sk_ACCESS_DESCRIPTION_new_reserve(NULL, num)) == NULL) { ERR_raise(ERR_LIB_X509V3, ERR_R_MALLOC_FAILURE); @@ -130,12 +130,18 @@ static AUTHORITY_INFO_ACCESS *v2i_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD ctmp.value = cnf->value; if (!v2i_GENERAL_NAME_ex(acc->location, method, ctx, &ctmp, 0)) goto err; - acc->method = OBJ_txt2obj(cnf->value, 0); + if ((objtmp = OPENSSL_strndup(cnf->name, ptmp - cnf->name)) == NULL) { + ERR_raise(ERR_LIB_X509V3, ERR_R_MALLOC_FAILURE); + goto err; + } + acc->method = OBJ_txt2obj(objtmp, 0); if (!acc->method) { ERR_raise_data(ERR_LIB_X509V3, X509V3_R_BAD_OBJECT, - "value=%s", cnf->value); + "value=%s", objtmp); + OPENSSL_free(objtmp); goto err; } + OPENSSL_free(objtmp); } return ainfo; err: |