diff --git a/library/bignum.c b/library/bignum.c
index f94bf57..563e67a 100644
--- a/library/bignum.c
+++ b/library/bignum.c
@@ -490,7 +490,8 @@
 /*
  * Export into an ASCII string
  */
-int mbedtls_mpi_write_string( const mbedtls_mpi *X, int radix, char *s, size_t *slen )
+int mbedtls_mpi_write_string( const mbedtls_mpi *X, int radix,
+                              char *buf, size_t buflen, size_t *olen )
 {
     int ret = 0;
     size_t n;
@@ -505,13 +506,13 @@
     if( radix >= 16 ) n >>= 1;
     n += 3;
 
-    if( *slen < n )
+    if( buflen < n )
     {
-        *slen = n;
+        *olen = n;
         return( MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL );
     }
 
-    p = s;
+    p = buf;
     mbedtls_mpi_init( &T );
 
     if( X->s == -1 )
@@ -548,7 +549,7 @@
     }
 
     *p++ = '\0';
-    *slen = p - s;
+    *olen = p - buf;
 
 cleanup:
 
@@ -604,11 +605,9 @@
      */
     char s[ MBEDTLS_MPI_RW_BUFFER_SIZE ];
 
-    n = sizeof( s );
-    memset( s, 0, n );
-    n -= 2;
+    memset( s, 0, sizeof( s ) );
 
-    MBEDTLS_MPI_CHK( mbedtls_mpi_write_string( X, radix, s, (size_t *) &n ) );
+    MBEDTLS_MPI_CHK( mbedtls_mpi_write_string( X, radix, s, sizeof( s ) - 2, &n ) );
 
     if( p == NULL ) p = "";
 
