diff options
Diffstat (limited to 'src/crypto/bn/add.c')
-rw-r--r-- | src/crypto/bn/add.c | 25 |
1 files changed, 4 insertions, 21 deletions
diff --git a/src/crypto/bn/add.c b/src/crypto/bn/add.c index a043d83..23f9f80 100644 --- a/src/crypto/bn/add.c +++ b/src/crypto/bn/add.c @@ -56,6 +56,8 @@ #include <openssl/bn.h> +#include <string.h> + #include <openssl/err.h> #include <openssl/mem.h> @@ -311,27 +313,8 @@ int BN_usub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b) { } } - if (rp != ap) { - for (;;) { - if (!dif--) { - break; - } - rp[0] = ap[0]; - if (!dif--) { - break; - } - rp[1] = ap[1]; - if (!dif--) { - break; - } - rp[2] = ap[2]; - if (!dif--) { - break; - } - rp[3] = ap[3]; - rp += 4; - ap += 4; - } + if (dif > 0 && rp != ap) { + memcpy(rp, ap, sizeof(*rp) * dif); } r->top = max; |