Adding ARRAY_SIZE macro for getting the size of constant arrays.

Change-Id: Ie60744761f5aa434a71a998f5ca98a8f8b1c25d5
Reviewed-on: https://boringssl-review.googlesource.com/10447
Reviewed-by: David Benjamin <davidben@google.com>
Commit-Queue: David Benjamin <davidben@google.com>
CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
diff --git a/ssl/internal.h b/ssl/internal.h
index 6e3a744..092d14b 100644
--- a/ssl/internal.h
+++ b/ssl/internal.h
@@ -148,6 +148,7 @@
 #include <openssl/ssl.h>
 #include <openssl/stack.h>
 
+
 #if defined(OPENSSL_WINDOWS)
 /* Windows defines struct timeval in winsock2.h. */
 OPENSSL_MSVC_PRAGMA(warning(push, 3))
diff --git a/ssl/ssl_cipher.c b/ssl/ssl_cipher.c
index 079c823..52369a4 100644
--- a/ssl/ssl_cipher.c
+++ b/ssl/ssl_cipher.c
@@ -151,6 +151,7 @@
 #include <openssl/stack.h>
 
 #include "internal.h"
+#include "../crypto/internal.h"
 
 
 /* kCiphers is an array of all supported ciphers, sorted by id. */
@@ -686,7 +687,7 @@
 
 };
 
-static const size_t kCiphersLen = sizeof(kCiphers) / sizeof(kCiphers[0]);
+static const size_t kCiphersLen = OPENSSL_ARRAY_SIZE(kCiphers);
 
 #define CIPHER_ADD 1
 #define CIPHER_KILL 2
@@ -786,8 +787,7 @@
     {"FIPS", ~SSL_kCECPQ1, ~0u, ~(SSL_eNULL|SSL_RC4), ~0u, 0},
 };
 
-static const size_t kCipherAliasesLen =
-    sizeof(kCipherAliases) / sizeof(kCipherAliases[0]);
+static const size_t kCipherAliasesLen = OPENSSL_ARRAY_SIZE(kCipherAliases);
 
 static int ssl_cipher_id_cmp(const void *in_a, const void *in_b) {
   const SSL_CIPHER *a = in_a;
diff --git a/ssl/ssl_ecdh.c b/ssl/ssl_ecdh.c
index 47b6eab..079ddb5 100644
--- a/ssl/ssl_ecdh.c
+++ b/ssl/ssl_ecdh.c
@@ -27,6 +27,7 @@
 #include <openssl/nid.h>
 
 #include "internal.h"
+#include "../crypto/internal.h"
 
 
 /* |EC_POINT| implementation. */
@@ -504,7 +505,7 @@
 
 static const SSL_ECDH_METHOD *method_from_group_id(uint16_t group_id) {
   size_t i;
-  for (i = 0; i < sizeof(kMethods) / sizeof(kMethods[0]); i++) {
+  for (i = 0; i < OPENSSL_ARRAY_SIZE(kMethods); i++) {
     if (kMethods[i].group_id == group_id) {
       return &kMethods[i];
     }
@@ -514,7 +515,7 @@
 
 static const SSL_ECDH_METHOD *method_from_nid(int nid) {
   size_t i;
-  for (i = 0; i < sizeof(kMethods) / sizeof(kMethods[0]); i++) {
+  for (i = 0; i < OPENSSL_ARRAY_SIZE(kMethods); i++) {
     if (kMethods[i].nid == nid) {
       return &kMethods[i];
     }
diff --git a/ssl/ssl_lib.c b/ssl/ssl_lib.c
index 9be76be..52701f4 100644
--- a/ssl/ssl_lib.c
+++ b/ssl/ssl_lib.c
@@ -2667,7 +2667,7 @@
     {TLS1_3_VERSION, SSL_OP_NO_TLSv1_3},
 };
 
-static const size_t kVersionsLen = sizeof(kVersions) / sizeof(kVersions[0]);
+static const size_t kVersionsLen = OPENSSL_ARRAY_SIZE(kVersions);
 
 int ssl_get_full_version_range(const SSL *ssl, uint16_t *out_min_version,
                                uint16_t *out_fallback_version,
diff --git a/ssl/ssl_test.cc b/ssl/ssl_test.cc
index f73c37d..2493773 100644
--- a/ssl/ssl_test.cc
+++ b/ssl/ssl_test.cc
@@ -32,6 +32,7 @@
 
 #include "internal.h"
 #include "test/scoped_types.h"
+#include "../crypto/internal.h"
 #include "../crypto/test/test_util.h"
 
 #if defined(OPENSSL_WINDOWS)
@@ -763,7 +764,7 @@
 
 static bool TestCipherGetRFCName(void) {
   for (size_t i = 0;
-       i < sizeof(kCipherRFCNameTests) / sizeof(kCipherRFCNameTests[0]); i++) {
+       i < OPENSSL_ARRAY_SIZE(kCipherRFCNameTests); i++) {
     const CIPHER_RFC_NAME_TEST *test = &kCipherRFCNameTests[i];
     std::string rfc_name;
     if (!CipherGetRFCName(&rfc_name, test->id & 0xffff)) {
diff --git a/ssl/t1_lib.c b/ssl/t1_lib.c
index a9a8fa3..496c9c4 100644
--- a/ssl/t1_lib.c
+++ b/ssl/t1_lib.c
@@ -124,6 +124,7 @@
 #include <openssl/type_check.h>
 
 #include "internal.h"
+#include "../crypto/internal.h"
 
 
 static int ssl_check_clienthello_tlsext(SSL *ssl);
@@ -327,7 +328,7 @@
   *out_group_ids_len = ssl->supported_group_list_len;
   if (!*out_group_ids) {
     *out_group_ids = kDefaultGroups;
-    *out_group_ids_len = sizeof(kDefaultGroups) / sizeof(kDefaultGroups[0]);
+    *out_group_ids_len = OPENSSL_ARRAY_SIZE(kDefaultGroups);
   }
 }
 
@@ -559,13 +560,11 @@
    * https://bugzilla.mozilla.org/show_bug.cgi?id=1119983 */
   if (max_version >= TLS1_3_VERSION) {
     *psigs = kDefaultTLS13SignatureAlgorithms;
-    return sizeof(kDefaultTLS13SignatureAlgorithms) /
-           sizeof(kDefaultTLS13SignatureAlgorithms[0]);
+    return OPENSSL_ARRAY_SIZE(kDefaultTLS13SignatureAlgorithms);
   }
 
   *psigs = kDefaultSignatureAlgorithms;
-  return sizeof(kDefaultSignatureAlgorithms) /
-         sizeof(kDefaultSignatureAlgorithms[0]);
+  return OPENSSL_ARRAY_SIZE(kDefaultSignatureAlgorithms);
 }
 
 int tls12_check_peer_sigalg(SSL *ssl, int *out_alert, uint16_t sigalg) {
@@ -3076,8 +3075,7 @@
     static const uint16_t kDefaultPeerAlgorithms[] = {SSL_SIGN_RSA_PKCS1_SHA1,
                                                       SSL_SIGN_ECDSA_SHA1};
     peer_sigalgs = kDefaultPeerAlgorithms;
-    peer_sigalgs_len =
-        sizeof(kDefaultPeerAlgorithms) / sizeof(kDefaultPeerAlgorithms[0]);
+    peer_sigalgs_len = OPENSSL_ARRAY_SIZE(kDefaultPeerAlgorithms);
   }
 
   for (i = 0; i < sigalgs_len; i++) {
diff --git a/ssl/test/bssl_shim.cc b/ssl/test/bssl_shim.cc
index 2a9ba88..f9ab913 100644
--- a/ssl/test/bssl_shim.cc
+++ b/ssl/test/bssl_shim.cc
@@ -56,6 +56,7 @@
 #include <string>
 #include <vector>
 
+#include "../../crypto/internal.h"
 #include "../../crypto/test/scoped_types.h"
 #include "async_bio.h"
 #include "packeted_bio.h"
@@ -1396,7 +1397,7 @@
       NID_X9_62_prime256v1, NID_secp384r1, NID_secp521r1, NID_X25519,
     };
     if (!SSL_set1_curves(ssl.get(), kAllCurves,
-                         sizeof(kAllCurves) / sizeof(kAllCurves[0]))) {
+                         OPENSSL_ARRAY_SIZE(kAllCurves))) {
       return false;
     }
   }
@@ -1535,8 +1536,7 @@
     memset(buf.get(), 0x42, kBufLen);
     static const size_t kRecordSizes[] = {
         0, 1, 255, 256, 257, 16383, 16384, 16385, 32767, 32768, 32769};
-    for (size_t i = 0; i < sizeof(kRecordSizes) / sizeof(kRecordSizes[0]);
-         i++) {
+    for (size_t i = 0; i < OPENSSL_ARRAY_SIZE(kRecordSizes); i++) {
       const size_t len = kRecordSizes[i];
       if (len > kBufLen) {
         fprintf(stderr, "Bad kRecordSizes value.\n");