diff --git a/library/bignum_mod.c b/library/bignum_mod.c
index 705b2db..60c073a 100644
--- a/library/bignum_mod.c
+++ b/library/bignum_mod.c
@@ -77,10 +77,13 @@
     switch( m->int_rep )
     {
         case MBEDTLS_MPI_MOD_REP_MONTGOMERY:
-            mbedtls_platform_zeroize( (mbedtls_mpi_uint *) m->rep.mont.rr,
-                                      m->limbs );
-            mbedtls_free( (mbedtls_mpi_uint *)m->rep.mont.rr );
-            m->rep.mont.rr = NULL;
+            if (m->rep.mont.rr != NULL)
+            {
+                mbedtls_platform_zeroize( (mbedtls_mpi_uint *) m->rep.mont.rr,
+                                           m->limbs );
+                mbedtls_free( (mbedtls_mpi_uint *)m->rep.mont.rr );
+                m->rep.mont.rr = NULL;
+            }
             m->rep.mont.mm = 0;
             break;
         case MBEDTLS_MPI_MOD_REP_OPT_RED:
@@ -104,6 +107,7 @@
     int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
     mbedtls_mpi N;
     mbedtls_mpi RR;
+    *X = NULL;
 
     mbedtls_mpi_init( &N );
     mbedtls_mpi_init( &RR );
@@ -111,16 +115,18 @@
     if ( A == NULL || limbs == 0 || limbs >= ( MBEDTLS_MPI_MAX_LIMBS / 2 ) - 2 )
         goto cleanup;
 
-    if ( mbedtls_mpi_grow( &N,  limbs ))
+    if ( mbedtls_mpi_grow( &N, limbs ) )
         goto cleanup;
 
-    memcpy( N.p, A, sizeof(mbedtls_mpi_uint) *  limbs );
+    memcpy( N.p, A, sizeof(mbedtls_mpi_uint) * limbs );
 
-    mbedtls_mpi_core_get_mont_r2_unsafe(&RR, &N);
+    ret = mbedtls_mpi_core_get_mont_r2_unsafe(&RR, &N);
 
-    *X = RR.p;
-    RR.p = NULL;
-    ret = 0;
+    if ( ret == 0 )
+    {
+        *X = RR.p;
+        RR.p = NULL;
+    }
 
 cleanup:
     mbedtls_mpi_free(&N);
@@ -157,7 +163,7 @@
         case MBEDTLS_MPI_MOD_REP_MONTGOMERY:
             m->int_rep = int_rep;
             m->rep.mont.mm = mbedtls_mpi_core_montmul_init( m->p );
-            set_mont_const_square( &m->rep.mont.rr, m->p, m->limbs );
+            ret = set_mont_const_square( &m->rep.mont.rr, m->p, m->limbs );
             break;
         case MBEDTLS_MPI_MOD_REP_OPT_RED:
             m->int_rep = int_rep;
