- Fixed incorrect handling of negative strings in mpi_read_string() (found by code coverage tests).


diff --git a/library/bignum.c b/library/bignum.c
index 4b8fa80..5c1de68 100644
--- a/library/bignum.c
+++ b/library/bignum.c
@@ -286,7 +286,15 @@
 
             MPI_CHK( mpi_get_digit( &d, radix, s[i] ) );
             MPI_CHK( mpi_mul_int( &T, X, radix ) );
-            MPI_CHK( mpi_add_int( X, &T, d ) );
+
+            if( X->s == 1 )
+            {
+                MPI_CHK( mpi_add_int( X, &T, d ) );
+            }
+            else
+            {
+                MPI_CHK( mpi_sub_int( X, &T, d ) );
+            }
         }
     }