summaryrefslogtreecommitdiff
path: root/mpi
diff options
context:
space:
mode:
authorNIIBE Yutaka <gniibe@fsij.org>2021-10-29 12:59:04 +0900
committerNIIBE Yutaka <gniibe@fsij.org>2021-10-29 12:59:04 +0900
commit34d55589b7d91a239435d77e3d45cf0deeba59b6 (patch)
tree9b18efc5de5237d68f6bb364d033842f5aa1a3e5 /mpi
parentecd4d348ac87c073ced38eb1e6dbec03b532cdf2 (diff)
downloadlibgcrypt-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.c11
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. */