Fix use of memcpy to memmove.
memcpy doesn't allow memory areas overlap. Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
This commit is contained in:
@@ -1,3 +1,10 @@
|
|||||||
|
2020-09-07 NIIBE Yutaka <gniibe@fsij.org>
|
||||||
|
|
||||||
|
* src/modp256r1.c (modp256r1_add, modp256r1_sub)
|
||||||
|
(modp256r1_reduce): Use memmove.
|
||||||
|
|
||||||
|
* (modp256k1_add, modp256k1_sub): Use memmove.
|
||||||
|
|
||||||
2020-09-04 NIIBE Yutaka <gniibe@fsij.org>
|
2020-09-04 NIIBE Yutaka <gniibe@fsij.org>
|
||||||
|
|
||||||
* src/openpgp-do.c (GPG_DO_ALG_INFO): New.
|
* src/openpgp-do.c (GPG_DO_ALG_INFO): New.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* modp256k1.c -- modulo arithmetic for p256k1
|
* modp256k1.c -- modulo arithmetic for p256k1
|
||||||
*
|
*
|
||||||
* Copyright (C) 2014, 2016 Free Software Initiative of Japan
|
* Copyright (C) 2014, 2016, 2020 Free Software Initiative of Japan
|
||||||
* Author: NIIBE Yutaka <gniibe@fsij.org>
|
* Author: NIIBE Yutaka <gniibe@fsij.org>
|
||||||
*
|
*
|
||||||
* This file is a part of Gnuk, a GnuPG USB Token implementation.
|
* This file is a part of Gnuk, a GnuPG USB Token implementation.
|
||||||
@@ -76,7 +76,7 @@ modp256k1_add (bn256 *X, const bn256 *A, const bn256 *B)
|
|||||||
cond &= bn256_sub (tmp, X, P256K1);
|
cond &= bn256_sub (tmp, X, P256K1);
|
||||||
if (cond)
|
if (cond)
|
||||||
/* No-carry AND borrow */
|
/* No-carry AND borrow */
|
||||||
memcpy (tmp, tmp, sizeof (bn256));
|
memmove (tmp, tmp, sizeof (bn256));
|
||||||
else
|
else
|
||||||
memcpy (X, tmp, sizeof (bn256));
|
memcpy (X, tmp, sizeof (bn256));
|
||||||
}
|
}
|
||||||
@@ -95,7 +95,7 @@ modp256k1_sub (bn256 *X, const bn256 *A, const bn256 *B)
|
|||||||
if (borrow)
|
if (borrow)
|
||||||
memcpy (X, tmp, sizeof (bn256));
|
memcpy (X, tmp, sizeof (bn256));
|
||||||
else
|
else
|
||||||
memcpy (tmp, tmp, sizeof (bn256));
|
memmove (tmp, tmp, sizeof (bn256));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* modp256r1.c -- modulo arithmetic for p256r1
|
* modp256r1.c -- modulo arithmetic for p256r1
|
||||||
*
|
*
|
||||||
* Copyright (C) 2011, 2013, 2014, 2016
|
* Copyright (C) 2011, 2013, 2014, 2016, 2020
|
||||||
* Free Software Initiative of Japan
|
* Free Software Initiative of Japan
|
||||||
* Author: NIIBE Yutaka <gniibe@fsij.org>
|
* Author: NIIBE Yutaka <gniibe@fsij.org>
|
||||||
*
|
*
|
||||||
@@ -71,7 +71,7 @@ modp256r1_add (bn256 *X, const bn256 *A, const bn256 *B)
|
|||||||
cond &= bn256_sub (tmp, X, P256R1);
|
cond &= bn256_sub (tmp, X, P256R1);
|
||||||
if (cond)
|
if (cond)
|
||||||
/* No-carry AND borrow */
|
/* No-carry AND borrow */
|
||||||
memcpy (tmp, tmp, sizeof (bn256));
|
memmove (tmp, tmp, sizeof (bn256));
|
||||||
else
|
else
|
||||||
memcpy (X, tmp, sizeof (bn256));
|
memcpy (X, tmp, sizeof (bn256));
|
||||||
}
|
}
|
||||||
@@ -90,7 +90,7 @@ modp256r1_sub (bn256 *X, const bn256 *A, const bn256 *B)
|
|||||||
if (borrow)
|
if (borrow)
|
||||||
memcpy (X, tmp, sizeof (bn256));
|
memcpy (X, tmp, sizeof (bn256));
|
||||||
else
|
else
|
||||||
memcpy (tmp, tmp, sizeof (bn256));
|
memmove (tmp, tmp, sizeof (bn256));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -122,7 +122,7 @@ modp256r1_reduce (bn256 *X, const bn512 *A)
|
|||||||
S1->word[0] = A->word[0];
|
S1->word[0] = A->word[0];
|
||||||
borrow = bn256_sub (tmp0, S1, P256R1);
|
borrow = bn256_sub (tmp0, S1, P256R1);
|
||||||
if (borrow)
|
if (borrow)
|
||||||
memcpy (tmp0, tmp0, sizeof (bn256));
|
memmove (tmp0, tmp0, sizeof (bn256));
|
||||||
else
|
else
|
||||||
memcpy (S1, tmp0, sizeof (bn256));
|
memcpy (S1, tmp0, sizeof (bn256));
|
||||||
/* X = S1 */
|
/* X = S1 */
|
||||||
@@ -166,7 +166,7 @@ modp256r1_reduce (bn256 *X, const bn512 *A)
|
|||||||
S5->word[0] = A->word[9];
|
S5->word[0] = A->word[9];
|
||||||
borrow = bn256_sub (tmp0, S5, P256R1);
|
borrow = bn256_sub (tmp0, S5, P256R1);
|
||||||
if (borrow)
|
if (borrow)
|
||||||
memcpy (tmp0, tmp0, sizeof (bn256));
|
memmove (tmp0, tmp0, sizeof (bn256));
|
||||||
else
|
else
|
||||||
memcpy (S5, tmp0, sizeof (bn256));
|
memcpy (S5, tmp0, sizeof (bn256));
|
||||||
/* X += S5 */
|
/* X += S5 */
|
||||||
@@ -180,7 +180,7 @@ modp256r1_reduce (bn256 *X, const bn512 *A)
|
|||||||
S6->word[0] = A->word[11];
|
S6->word[0] = A->word[11];
|
||||||
borrow = bn256_sub (tmp0, S6, P256R1);
|
borrow = bn256_sub (tmp0, S6, P256R1);
|
||||||
if (borrow)
|
if (borrow)
|
||||||
memcpy (tmp0, tmp0, sizeof (bn256));
|
memmove (tmp0, tmp0, sizeof (bn256));
|
||||||
else
|
else
|
||||||
memcpy (S6, tmp0, sizeof (bn256));
|
memcpy (S6, tmp0, sizeof (bn256));
|
||||||
/* X -= S6 */
|
/* X -= S6 */
|
||||||
@@ -195,7 +195,7 @@ modp256r1_reduce (bn256 *X, const bn512 *A)
|
|||||||
S7->word[0] = A->word[12];
|
S7->word[0] = A->word[12];
|
||||||
borrow = bn256_sub (tmp0, S7, P256R1);
|
borrow = bn256_sub (tmp0, S7, P256R1);
|
||||||
if (borrow)
|
if (borrow)
|
||||||
memcpy (tmp0, tmp0, sizeof (bn256));
|
memmove (tmp0, tmp0, sizeof (bn256));
|
||||||
else
|
else
|
||||||
memcpy (S7, tmp0, sizeof (bn256));
|
memcpy (S7, tmp0, sizeof (bn256));
|
||||||
/* X -= S7 */
|
/* X -= S7 */
|
||||||
|
|||||||
Reference in New Issue
Block a user