aboutsummaryrefslogtreecommitdiffstats
path: root/mpi/mpicoder.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2002-09-20 07:40:01 +0000
committerWerner Koch <[email protected]>2002-09-20 07:40:01 +0000
commit4948f99eb44ede223344ba3fd1719f797b430ade (patch)
tree03f04d9e228e53cd7a21b2313a7d9b51f9cf1b88 /mpi/mpicoder.c
parent* gpgkeys_hkp.c (handle_old_hkp_index): s/input/inp/ to avoid (diff)
downloadgnupg-4948f99eb44ede223344ba3fd1719f797b430ade.tar.gz
gnupg-4948f99eb44ede223344ba3fd1719f797b430ade.zip
* 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.
Diffstat (limited to 'mpi/mpicoder.c')
-rw-r--r--mpi/mpicoder.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/mpi/mpicoder.c b/mpi/mpicoder.c
index f796888c8..8cb1538c0 100644
--- a/mpi/mpicoder.c
+++ b/mpi/mpicoder.c
@@ -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];