diff --git a/lib/libmbedtls/mbedtls/library/bignum.c b/lib/libmbedtls/mbedtls/library/bignum.c
index 8279d7d..4c1840a 100644
--- a/lib/libmbedtls/mbedtls/library/bignum.c
+++ b/lib/libmbedtls/mbedtls/library/bignum.c
@@ -1788,7 +1788,9 @@
     size_t i, j, nblimbs;
     size_t bufsize, nbits;
     mbedtls_mpi_uint ei, mm, state;
-    mbedtls_mpi RR, T, W[ 2 << MBEDTLS_MPI_WINDOW_SIZE ], Apos;
+    mbedtls_mpi RR, T, Apos;
+    mbedtls_mpi *W;
+    const size_t array_size_W = 2 << MBEDTLS_MPI_WINDOW_SIZE;
     int neg;
 
     MPI_VALIDATE_RET( X != NULL );
@@ -1802,13 +1804,18 @@
     if( mbedtls_mpi_cmp_int( E, 0 ) < 0 )
         return( MBEDTLS_ERR_MPI_BAD_INPUT_DATA );
 
+    W = mempool_alloc( mbedtls_mpi_mempool,
+                       sizeof( mbedtls_mpi ) * array_size_W );
+    if( W == NULL )
+        return( MBEDTLS_ERR_MPI_ALLOC_FAILED );
+
     /*
      * Init temps and window size
      */
     mbedtls_mpi_montg_init( &mm, N );
     mbedtls_mpi_init_mempool( &RR ); mbedtls_mpi_init_mempool( &T );
     mbedtls_mpi_init_mempool( &Apos );
-    for( i = 0; i < ARRAY_SIZE(W); i++ )
+    for( i = 0; i < array_size_W; i++ )
         mbedtls_mpi_init_mempool( W + i );
 
     i = mbedtls_mpi_bitlen( E );
@@ -1981,8 +1988,9 @@
 
 cleanup:
 
-    for( i = 0; i < ARRAY_SIZE(W); i++ )
+    for( i = 0; i < array_size_W; i++ )
         mbedtls_mpi_free( W + i );
+    mempool_free( mbedtls_mpi_mempool , W );
 
     mbedtls_mpi_free( &T ); mbedtls_mpi_free( &Apos );
 
