* mpicoder.c (mpi_read): Fix minor bug in reading a zero-length MPI
authorDavid Shaw <dshaw@jabberwocky.com>
Thu, 1 Sep 2005 13:44:49 +0000 (13:44 +0000)
committerDavid Shaw <dshaw@jabberwocky.com>
Thu, 1 Sep 2005 13:44:49 +0000 (13:44 +0000)
(was failing unnecessarily).

mpi/ChangeLog
mpi/mpicoder.c

index 775f437..a2af9f3 100644 (file)
@@ -1,3 +1,8 @@
+2005-09-01  David Shaw  <dshaw@jabberwocky.com>
+
+       * mpicoder.c (mpi_read): Fix minor bug in reading a zero-length
+       MPI (was failing unnecessarily).
+
 2005-05-06  Werner Koch  <wk@g10code.com>
 
        * mpi-scan.c (mpi_putbyte, mpi_getbyte): Removed.  Not used.
index 46cfb5b..d5ce999 100644 (file)
@@ -80,16 +80,20 @@ mpi_read(IOBUF inp, unsigned *ret_nread, int secure)
     mpi_limb_t a;
     MPI val = MPI_NULL;
 
+    if (nread == nmax)
+        goto overflow;
     if( (c = iobuf_get(inp)) == -1 )
        goto leave;
-    if (++nread >= nmax)
-        goto overflow;
+    nread++;
     nbits = c << 8;
+
+    if (nread == nmax)
+        goto overflow;
     if( (c = iobuf_get(inp)) == -1 )
        goto leave;
-    if (++nread >= nmax)
-        goto overflow;
+    nread++;
     nbits |= c;
+
     if( nbits > MAX_EXTERN_MPI_BITS ) {
        log_error("mpi too large for this implementation (%u bits)\n", nbits);
        goto leave;
@@ -112,7 +116,7 @@ mpi_read(IOBUF inp, unsigned *ret_nread, int secure)
     for( ; j > 0; j-- ) {
        a = 0;
        for(; i < BYTES_PER_MPI_LIMB; i++ ) {
-            if (nread >= nmax) {
+            if (nread == nmax) {
 #ifdef M_DEBUG
                 mpi_debug_free (val);
 #else