]> git.ipfire.org Git - thirdparty/nettle.git/commitdiff
From master: Fixed ECC bug with overlapping arguments to mpn_mul_n.
authorNiels Möller <nisse@lysator.liu.se>
Fri, 17 May 2013 08:27:07 +0000 (10:27 +0200)
committerNiels Möller <nisse@lysator.liu.se>
Fri, 17 May 2013 08:27:07 +0000 (10:27 +0200)
ChangeLog
ecc-j-to-a.c

index a6a216d67cb8d3adf1fa936469a6dc76d9605a2c..ce4605f47c1814a5cf77cd28d01dab2a3634f6de 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2013-05-17  Niels Möller  <nisse@lysator.liu.se>
+
+       From master branch:
+       * ecc-j-to-a.c (ecc_j_to_a): Fixed ecc_modp_mul call, to avoid
+       invalid overlap of arguments to mpn_mul_n. Problem tracked down by
+       Magnus Holmgren.
+
 2013-04-24  Niels Möller  <nisse@lysator.liu.se>
 
        * Released nettle-2.7.
index df8b876490e797342176583839fdf753c2cadf41..26c1a03abde2603fd5dd9a19af2f9117570b6960 100644 (file)
@@ -46,6 +46,7 @@ ecc_j_to_a (const struct ecc_curve *ecc,
 #define up   (scratch + ecc->size)
 #define iz2p (scratch + ecc->size)
 #define iz3p (scratch + 2*ecc->size)
+#define izBp (scratch + 3*ecc->size)
 #define tp    scratch
 
   mp_limb_t cy;
@@ -72,11 +73,11 @@ ecc_j_to_a (const struct ecc_curve *ecc,
       if (flags & 1)
        {
          /* Divide this common factor by B */
-         mpn_copyi (iz3p, izp, ecc->size);
-         mpn_zero (iz3p + ecc->size, ecc->size);
-         ecc->redc (ecc, iz3p);
-      
-         ecc_modp_mul (ecc, iz2p, izp, iz3p);
+         mpn_copyi (izBp, izp, ecc->size);
+         mpn_zero (izBp + ecc->size, ecc->size);
+         ecc->redc (ecc, izBp);
+
+         ecc_modp_mul (ecc, iz2p, izp, izBp);
        }
       else
        ecc_modp_sqr (ecc, iz2p, izp);