]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
Restore v2i_AUTHORITY_INFO_ACCESS() behavior
authorjwalch <jeremy.walch@gmail.com>
Tue, 15 Dec 2020 20:00:11 +0000 (15:00 -0500)
committerTomas Mraz <tmraz@fedoraproject.org>
Mon, 21 Dec 2020 13:38:37 +0000 (14:38 +0100)
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)

crypto/x509/v3_info.c

index 003f3ce17216ffe04335168c15e724ed068fcaa1..053e59108810dbf82e0d9c37c8b046c3fc7da87e 100644 (file)
@@ -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: