diff options
author | NIIBE Yutaka <gniibe@fsij.org> | 2021-10-29 12:59:04 +0900 |
---|---|---|
committer | NIIBE Yutaka <gniibe@fsij.org> | 2021-10-29 12:59:04 +0900 |
commit | 34d55589b7d91a239435d77e3d45cf0deeba59b6 (patch) | |
tree | 9b18efc5de5237d68f6bb364d033842f5aa1a3e5 /mpi | |
parent | ecd4d348ac87c073ced38eb1e6dbec03b532cdf2 (diff) | |
download | libgcrypt-34d55589b7d91a239435d77e3d45cf0deeba59b6.tar.gz |
mpi: Allow opaque MPI with zero length.
* mpi/mpiutil.c (_gcry_mpi_copy): Support zero length.
--
Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
Diffstat (limited to 'mpi')
-rw-r--r-- | mpi/mpiutil.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/mpi/mpiutil.c b/mpi/mpiutil.c index a5583c79..74fbac37 100644 --- a/mpi/mpiutil.c +++ b/mpi/mpiutil.c @@ -366,10 +366,13 @@ _gcry_mpi_copy (gcry_mpi_t a) gcry_mpi_t b; if( a && (a->flags & 4) ) { - void *p = _gcry_is_secure(a->d)? xmalloc_secure ((a->sign+7)/8) - : xmalloc ((a->sign+7)/8); - if (a->d) - memcpy( p, a->d, (a->sign+7)/8 ); + void *p = NULL; + if (a->sign) { + p = _gcry_is_secure(a->d)? xmalloc_secure ((a->sign+7)/8) + : xmalloc ((a->sign+7)/8); + if (a->d) + memcpy( p, a->d, (a->sign+7)/8 ); + } b = mpi_set_opaque( NULL, p, a->sign ); b->flags = a->flags; b->flags &= ~(16|32); /* Reset the immutable and constant flags. */ |