* mpicoder.c (do_get_buffer): Avoid zero length allocation.
authorWerner Koch <wk@gnupg.org>
Fri, 20 Sep 2002 07:40:01 +0000 (07:40 +0000)
committerWerner Koch <wk@gnupg.org>
Fri, 20 Sep 2002 07:40:01 +0000 (07:40 +0000)
Checked that all callers behave properly when NBYTES returns 0 as
the length of the allocated buffer.

mpi/ChangeLog
mpi/mpicoder.c

index 238f69f..0a2d05b 100644 (file)
@@ -1,3 +1,9 @@
+2002-09-20  Werner Koch  <wk@gnupg.org>
+
+       * mpicoder.c (do_get_buffer): Avoid zero length allocation.
+       Checked that all callers behave properly when NBYTES returns 0 as
+       the length of the allocated buffer.
+
 2002-09-10  Werner Koch  <wk@gnupg.org>
 
        * mpi-bit.c (mpi_normalize): Replaced the check for protected by
index f796888..8cb1538 100644 (file)
@@ -332,12 +332,15 @@ do_get_buffer( MPI a, unsigned *nbytes, int *sign, int force_secure )
     byte *p, *buffer;
     mpi_limb_t alimb;
     int i;
+    unsigned int n;
 
     if( sign )
        *sign = a->sign;
-    *nbytes = a->nlimbs * BYTES_PER_MPI_LIMB;
-    p = buffer = force_secure || mpi_is_secure(a) ? m_alloc_secure( *nbytes)
-                                                 : m_alloc( *nbytes );
+    *nbytes = n = a->nlimbs * BYTES_PER_MPI_LIMB;
+    if (!n)
+      n++; /* avoid zero length allocation */
+    p = buffer = force_secure || mpi_is_secure(a) ? m_alloc_secure(n)
+                                                 : m_alloc(n);
 
     for(i=a->nlimbs-1; i >= 0; i-- ) {
        alimb = a->d[i];