2003-04-27 Moritz Schulte <moritz@g10code.com>
authorMoritz Schulte <mo@g10code.com>
Sun, 27 Apr 2003 19:28:28 +0000 (19:28 +0000)
committerMoritz Schulte <mo@g10code.com>
Sun, 27 Apr 2003 19:28:28 +0000 (19:28 +0000)
* mpiutil.c (_gcry_mpi_resize): Allocate secure memory, in case
bit zero of `flags' is set.

* mpi-add.c (gcry_mpi_sub): Simplify function; always use a
temporary variable now.

mpi/ChangeLog
mpi/mpi-add.c
mpi/mpiutil.c

index c36d1e4..1825746 100644 (file)
@@ -1,3 +1,11 @@
+2003-04-27  Moritz Schulte  <moritz@g10code.com>
+
+       * mpiutil.c (_gcry_mpi_resize): Allocate secure memory, in case
+       bit zero of `flags' is set.
+
+       * mpi-add.c (gcry_mpi_sub): Simplify function; always use a
+       temporary variable now.
+
 2003-04-15  Werner Koch  <wk@gnupg.org>
 
        * longlong.h (umul_ppmm): Support SH3 and SH4.  Thanks to
index 56f5de0..9e6b6dd 100644 (file)
@@ -1,5 +1,5 @@
 /* mpi-add.c  -  MPI functions
- * Copyright (C) 1994, 1996, 1998, 2001, 2002 Free Software Foundation, Inc.
+ * Copyright (C) 1994, 1996, 1998, 2001, 2002, 2003 Free Software Foundation, Inc.
  *
  * This file is part of Libgcrypt.
  *
@@ -213,18 +213,10 @@ gcry_mpi_sub_ui(MPI w, MPI u, unsigned long v )
 void
 gcry_mpi_sub(MPI w, MPI u, MPI v)
 {
-    if( w == v ) {
-       MPI vv = mpi_copy(v);
-       vv->sign = !vv->sign;
-       gcry_mpi_add( w, u, vv );
-       mpi_free(vv);
-    }
-    else {
-       /* fixme: this is not thread-save (we temp. modify v) */
-       v->sign = !v->sign;
-       gcry_mpi_add( w, u, v );
-       v->sign = !v->sign;
-    }
+  MPI vv = mpi_copy (v);
+  vv->sign = ! vv->sign;
+  gcry_mpi_add (w, u, vv);
+  mpi_free (vv);
 }
 
 
index b1b9a97..caa48a3 100644 (file)
@@ -1,5 +1,5 @@
 /* mpiutil.ac  -  Utility functions for MPI
- * Copyright (C) 1998, 2000, 2001, 2002 Free Software Foundation, Inc.
+ * Copyright (C) 1998, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
  *
  * This file is part of Libgcrypt.
  *
@@ -107,20 +107,23 @@ _gcry_mpi_assign_limb_space( MPI a, mpi_ptr_t ap, unsigned nlimbs )
  * (set to 0) [done by gcry_realloc()]
  */
 void
-_gcry_mpi_resize( MPI a, unsigned nlimbs )
+_gcry_mpi_resize (MPI a, unsigned nlimbs)
 {
-    if( nlimbs <= a->alloced )
-       return; /* no need to do it */
-    /* Note: a->secure is not used - instead the realloc functions
-     * take care of it. Maybe we should drop a->secure completely
-     * and rely on a mpi_is_secure function, which would be
-     * a wrapper around gcry_is_secure
-     */
-    if( a->d )
-       a->d = gcry_xrealloc(a->d, nlimbs * sizeof(mpi_limb_t) );
-    else  /* FIXME: It may not be allocted in secure memory */
-       a->d = gcry_xcalloc( nlimbs , sizeof(mpi_limb_t) );
-    a->alloced = nlimbs;
+  if (nlimbs <= a->alloced)
+    return; /* no need to do it */
+
+  if (a->d)
+    a->d = gcry_xrealloc (a->d, nlimbs * sizeof (mpi_limb_t));
+  else
+    {
+      if (a->flags & 1)
+       /* Secure memory is wanted.  */
+       a->d = gcry_xcalloc_secure (nlimbs , sizeof (mpi_limb_t));
+      else
+       /* Standard memory.  */
+       a->d = gcry_xcalloc (nlimbs , sizeof (mpi_limb_t));
+    }
+  a->alloced = nlimbs;
 }
 
 void