replace manual alloction math and srlcats with asprintf

Change-Id: I94077581037372ea658e60b86b05fa977e1c3ac6
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/74868
Commit-Queue: Bob Beck <bbe@google.com>
Reviewed-by: Adam Langley <agl@google.com>
diff --git a/crypto/x509/v3_info.cc b/crypto/x509/v3_info.cc
index ca52d01..79a9194 100644
--- a/crypto/x509/v3_info.cc
+++ b/crypto/x509/v3_info.cc
@@ -80,7 +80,6 @@
   const AUTHORITY_INFO_ACCESS *ainfo =
       reinterpret_cast<const AUTHORITY_INFO_ACCESS *>(ext);
   ACCESS_DESCRIPTION *desc;
-  int name_len;
   char objtmp[80], *name;
   CONF_VALUE *vtmp;
   STACK_OF(CONF_VALUE) *tret = ret;
@@ -97,14 +96,9 @@
     vtmp = sk_CONF_VALUE_value(tret, i);
     i2t_ASN1_OBJECT(objtmp, sizeof objtmp, desc->method);
 
-    name_len = strlen(objtmp) + 3 + strlen(vtmp->name) + 1;
-    name = reinterpret_cast<char *>(OPENSSL_malloc(name_len));
-    if (name == NULL) {
+    if (OPENSSL_asprintf(&name, "%s - %s", objtmp, vtmp->name) == -1) {
       goto err;
     }
-    OPENSSL_strlcpy(name, objtmp, name_len);
-    OPENSSL_strlcat(name, " - ", name_len);
-    OPENSSL_strlcat(name, vtmp->name, name_len);
     OPENSSL_free(vtmp->name);
     vtmp->name = name;
   }