Make ASN1_OBJECT_create size_t-clean.

Change-Id: If7eb9daf65f6c9480a9bffb5f1e1ea3143c5faf7
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/58146
Commit-Queue: David Benjamin <davidben@google.com>
Reviewed-by: Bob Beck <bbe@google.com>
diff --git a/crypto/asn1/a_object.c b/crypto/asn1/a_object.c
index 77bd175..55b6dad 100644
--- a/crypto/asn1/a_object.c
+++ b/crypto/asn1/a_object.c
@@ -261,16 +261,20 @@
   }
 }
 
-ASN1_OBJECT *ASN1_OBJECT_create(int nid, const unsigned char *data, int len,
+ASN1_OBJECT *ASN1_OBJECT_create(int nid, const unsigned char *data, size_t len,
                                 const char *sn, const char *ln) {
-  ASN1_OBJECT o;
+  if (len > INT_MAX) {
+    OPENSSL_PUT_ERROR(ASN1, ASN1_R_STRING_TOO_LONG);
+    return NULL;
+  }
 
+  ASN1_OBJECT o;
   o.sn = sn;
   o.ln = ln;
   o.data = data;
   o.nid = nid;
-  o.length = len;
+  o.length = (int)len;
   o.flags = ASN1_OBJECT_FLAG_DYNAMIC | ASN1_OBJECT_FLAG_DYNAMIC_STRINGS |
             ASN1_OBJECT_FLAG_DYNAMIC_DATA;
-  return (OBJ_dup(&o));
+  return OBJ_dup(&o);
 }
diff --git a/include/openssl/asn1.h b/include/openssl/asn1.h
index ff77955..59996b6 100644
--- a/include/openssl/asn1.h
+++ b/include/openssl/asn1.h
@@ -1432,7 +1432,7 @@
 // TODO(davidben): Should we just ignore all those parameters? NIDs and names
 // are only relevant for |ASN1_OBJECT|s in the obj.h table.
 OPENSSL_EXPORT ASN1_OBJECT *ASN1_OBJECT_create(int nid, const uint8_t *data,
-                                               int len, const char *sn,
+                                               size_t len, const char *sn,
                                                const char *ln);
 
 // ASN1_OBJECT_free releases memory associated with |a|. If |a| is a static