summaryrefslogtreecommitdiffstats
path: root/crypto/x509
diff options
context:
space:
mode:
authorjwalch <jeremy.walch@gmail.com>2020-12-15 15:00:11 -0500
committerTomas Mraz <tmraz@fedoraproject.org>2020-12-21 14:38:37 +0100
commit7a7ed5fc7978309c997804e174914a037777d786 (patch)
tree73784e68d5e6974f8daef06d33fc842db2d97ff0 /crypto/x509
parent3a1ee3c1993c588a22cb80f1d0eb6237f83a1560 (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.c12
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: