Also add OPENSSL_calloc
This is not in upstream OpenSSL but saves a bunch of manual overflow
checks. Note it does also introduce some zeroing of buffers, but I think
this should be fine here.
Change-Id: I0c3e65ce2d21ee9d206ccbe3075ce5291c3acb30
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/63365
Reviewed-by: Bob Beck <bbe@google.com>
Commit-Queue: David Benjamin <davidben@google.com>
diff --git a/crypto/mem.c b/crypto/mem.c
index b17267f..5609224 100644
--- a/crypto/mem.c
+++ b/crypto/mem.c
@@ -275,6 +275,15 @@
return ret;
}
+void *OPENSSL_calloc(size_t num, size_t size) {
+ if (size != 0 && num > SIZE_MAX / size) {
+ OPENSSL_PUT_ERROR(CRYPTO, ERR_R_OVERFLOW);
+ return NULL;
+ }
+
+ return OPENSSL_zalloc(num * size);
+}
+
void OPENSSL_free(void *orig_ptr) {
if (orig_ptr == NULL) {
return;