Merge pull request #6929 from paul-elliott-arm/fix_iar_warnings

Backport 2.28: Fix IAR warnings
diff --git a/ChangeLog.d/fix-iar-warnings.txt b/ChangeLog.d/fix-iar-warnings.txt
index 244e863..8a30132 100644
--- a/ChangeLog.d/fix-iar-warnings.txt
+++ b/ChangeLog.d/fix-iar-warnings.txt
@@ -1,2 +1,2 @@
 Bugfix
-   * Fix IAR compiler warnings. Contributed by Glenn Strauss in #3835.
+   * Fix IAR compiler warnings. Fixes #6924.
diff --git a/library/bignum.c b/library/bignum.c
index 699d2c6..d915ade 100644
--- a/library/bignum.c
+++ b/library/bignum.c
@@ -2063,6 +2063,7 @@
     size_t window_bitsize;
     size_t i, j, nblimbs;
     size_t bufsize, nbits;
+    size_t exponent_bits_in_window = 0;
     mbedtls_mpi_uint ei, mm, state;
     mbedtls_mpi RR, T, W[(size_t) 1 << MBEDTLS_MPI_WINDOW_SIZE], WW, Apos;
     int neg;
@@ -2236,7 +2237,6 @@
     nblimbs = E->n;
     bufsize = 0;
     nbits   = 0;
-    size_t exponent_bits_in_window = 0;
     state   = 0;
 
     while (1) {
diff --git a/library/ecp.c b/library/ecp.c
index a029c22..9051490 100644
--- a/library/ecp.c
+++ b/library/ecp.c
@@ -163,7 +163,8 @@
     int ret;
     unsigned char secret_bytes[MBEDTLS_ECP_MAX_BYTES];
     /* The list starts with strong hashes */
-    const mbedtls_md_type_t md_type = mbedtls_md_list()[0];
+    const mbedtls_md_type_t md_type =
+        (const mbedtls_md_type_t) (mbedtls_md_list()[0]);
     const mbedtls_md_info_t *md_info = mbedtls_md_info_from_type(md_type);
 
     if (secret_len > MBEDTLS_ECP_MAX_BYTES) {
@@ -2062,12 +2063,13 @@
     } else
 #endif
     {
+        int have_rng = 1;
+
         /* Start with a non-zero point and randomize its coordinates */
         i = d;
         MBEDTLS_MPI_CHK(ecp_select_comb(grp, R, T, T_size, x[i]));
         MBEDTLS_MPI_CHK(mbedtls_mpi_lset(&R->Z, 1));
 
-        int have_rng = 1;
 #if defined(MBEDTLS_ECP_NO_INTERNAL_RNG)
         if (f_rng == NULL) {
             have_rng = 0;
@@ -2172,6 +2174,7 @@
     unsigned char parity_trick;
     unsigned char k[COMB_MAX_D + 1];
     mbedtls_ecp_point *RR = R;
+    int have_rng = 1;
 
 #if defined(MBEDTLS_ECP_RESTARTABLE)
     if (rs_ctx != NULL && rs_ctx->rsm != NULL) {
@@ -2208,7 +2211,6 @@
      *
      * Avoid the leak by randomizing coordinates before we normalize them.
      */
-    int have_rng = 1;
 #if defined(MBEDTLS_ECP_NO_INTERNAL_RNG)
     if (f_rng == NULL) {
         have_rng = 0;