diff --git a/include/mbedtls/bignum.h b/include/mbedtls/bignum.h
index 0dfe22e..d03b983 100644
--- a/include/mbedtls/bignum.h
+++ b/include/mbedtls/bignum.h
@@ -324,17 +324,19 @@
  *
  * \param X        Source MPI
  * \param radix    Output numeric base
- * \param s        String buffer
- * \param slen     String buffer size
+ * \param buf      Buffer to write the string to
+ * \param buflen   Length of buf
+ * \param olen     Length of the string written, including final NUL byte
  *
  * \return         0 if successful, or a MBEDTLS_ERR_MPI_XXX error code.
- *                 *slen is always updated to reflect the amount
+ *                 *olen is always updated to reflect the amount
  *                 of data that has (or would have) been written.
  *
- * \note           Call this function with *slen = 0 to obtain the
- *                 minimum required buffer size in *slen.
+ * \note           Call this function with buflen = 0 to obtain the
+ *                 minimum required buffer size in *olen.
  */
-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 );
 
 #if defined(MBEDTLS_FS_IO)
 /**
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 = "";
 
diff --git a/tests/suites/test_suite_mpi.function b/tests/suites/test_suite_mpi.function
index 134d220..2d68f8d 100644
--- a/tests/suites/test_suite_mpi.function
+++ b/tests/suites/test_suite_mpi.function
@@ -33,14 +33,14 @@
 {
     mbedtls_mpi X;
     char str[1000];
-    size_t len = output_size;
+    size_t len;
 
     mbedtls_mpi_init( &X );
 
     TEST_ASSERT( mbedtls_mpi_read_string( &X, radix_X, input_X ) == result_read );
     if( result_read == 0 )
     {
-        TEST_ASSERT( mbedtls_mpi_write_string( &X, radix_A, str, &len ) == result_write );
+        TEST_ASSERT( mbedtls_mpi_write_string( &X, radix_A, str, output_size, &len ) == result_write );
         if( result_write == 0 )
         {
             TEST_ASSERT( strcasecmp( str, input_A ) == 0 );
@@ -58,7 +58,7 @@
     mbedtls_mpi X;
     unsigned char str[1000];
     unsigned char buf[1000];
-    size_t len = 1000;
+    size_t len;
     size_t input_len;
 
     mbedtls_mpi_init( &X );
@@ -66,7 +66,7 @@
     input_len = unhexify( buf, input_X );
 
     TEST_ASSERT( mbedtls_mpi_read_binary( &X, buf, input_len ) == 0 );
-    TEST_ASSERT( mbedtls_mpi_write_string( &X, radix_A, (char *) str, &len ) == 0 );
+    TEST_ASSERT( mbedtls_mpi_write_string( &X, radix_A, (char *) str, sizeof( str ), &len ) == 0 );
     TEST_ASSERT( strcmp( (char *) str, input_A ) == 0 );
 
 exit:
