mpi: Fix gcry_mpi_copy for NULL opaque data.
authorWerner Koch <wk@gnupg.org>
Mon, 13 Apr 2015 09:48:33 +0000 (11:48 +0200)
committerWerner Koch <wk@gnupg.org>
Mon, 13 Apr 2015 09:48:33 +0000 (11:48 +0200)
* mpi/mpiutil.c (_gcry_mpi_copy): Copy opaque only if needed.
--

gcry_mpi_set_opaque allows to store NULL as opaque data.  Thus we also
need to take care when copying such data.

Signed-off-by: Werner Koch <wk@gnupg.org>
mpi/mpiutil.c

index fbbd3b4..71b3f1c 100644 (file)
@@ -343,7 +343,8 @@ _gcry_mpi_copy (gcry_mpi_t a)
     if( a && (a->flags & 4) ) {
        void *p = _gcry_is_secure(a->d)? xmalloc_secure ((a->sign+7)/8)
                                        : xmalloc ((a->sign+7)/8);
-       memcpy( p, a->d, (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 &= ~(16|32); /* Reset the immutable and constant flags.  */
     }