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