* mpicoder.c (mpi_read_from_buffer): Bail out on a zero length
authorWerner Koch <wk@gnupg.org>
Wed, 20 Mar 2002 10:55:30 +0000 (10:55 +0000)
committerWerner Koch <wk@gnupg.org>
Wed, 20 Mar 2002 10:55:30 +0000 (10:55 +0000)
buffer because we can't eventually do an malloc of this size.
Reported by Timo.

mpi/ChangeLog
mpi/mpicoder.c

index 46355f2..ff36640 100644 (file)
@@ -1,3 +1,9 @@
+2002-03-20  Werner Koch  <wk@gnupg.org>
+
+       * mpicoder.c (mpi_read_from_buffer): Bail out on a zero length
+       buffer because we can't eventually do an malloc of this size.
+       Reported by Timo.
+
 2002-01-14  Werner Koch  <wk@gnupg.org>
 
        * mpi-inv.c (_gcry_mpi_invm): Typo fixes, noted by Carlo Perassi.
index c026c93..9c3e34b 100644 (file)
@@ -34,7 +34,7 @@ static MPI
 mpi_read_from_buffer(byte *buffer, unsigned *ret_nread, int secure)
 {
     int i, j;
-    unsigned nbits, nbytes, nlimbs, nread=0;
+    unsigned int nbits, nbytes, nlimbs, nread=0;
     mpi_limb_t a;
     MPI val = MPI_NULL;
 
@@ -45,6 +45,10 @@ mpi_read_from_buffer(byte *buffer, unsigned *ret_nread, int secure)
        log_error("mpi too large (%u bits)\n", nbits);
        goto leave;
     }
+    else if( !nbits ) {
+       log_error("an mpi of size 0 is not allowed\n");
+       goto leave;
+    }
     buffer += 2;
     nread = 2;