www.usr.com/support/gpl/USR9107_release.1.4.tar.gz
[bcm963xx.git] / userapps / opensource / sshd / libtommath / bn_mp_clear.c
index 8273ac9..1dc053b 100755 (executable)
@@ -1,10 +1,12 @@
+#include <tommath.h>
+#ifdef BN_MP_CLEAR_C
 /* LibTomMath, multiple-precision integer library -- Tom St Denis
  *
- * LibTomMath is library that provides for multiple-precision
+ * LibTomMath is a library that provides multiple-precision
  * integer arithmetic as well as number theoretic functionality.
  *
- * The library is designed directly after the MPI library by
- * Michael Fromberger but has been written from scratch with 
+ * The library was designed directly after the MPI library by
+ * Michael Fromberger but has been written from scratch with
  * additional optimizations in place.
  *
  * The library is free for all purposes without any express
  *
  * Tom St Denis, tomstdenis@iahu.ca, http://math.libtomcrypt.org
  */
-#include <tommath.h>
 
 /* clear one (frees)  */
 void
 mp_clear (mp_int * a)
 {
-  if (a->dp != NULL) {
+  volatile mp_digit *p;
+  int len;
 
+  /* only do anything if a hasn't been freed previously */
+  if (a->dp != NULL) {
     /* first zero the digits */
-    memset (a->dp, 0, sizeof (mp_digit) * a->used);
+       len = a->alloc;
+       p = a->dp;
+       while (len--) {
+               *p++ = 0;
+       }
 
     /* free ram */
-    free (a->dp);
+    XFREE(a->dp);
 
     /* reset members to make debugging easier */
-    a->dp = NULL;
+    a->dp    = NULL;
     a->alloc = a->used = 0;
+    a->sign  = MP_ZPOS;
   }
 }
+#endif