From 248f0466112c96b9851c662fa829f20d28d16344 Mon Sep 17 00:00:00 2001 From: practicalswift Date: Sun, 6 May 2018 09:28:54 +0200 Subject: [PATCH] Make sure we're not using an uninitialized variable in secp256k1_wnaf_const(...) --- src/ecmult_const_impl.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/ecmult_const_impl.h b/src/ecmult_const_impl.h index 8411752..61a4770 100644 --- a/src/ecmult_const_impl.h +++ b/src/ecmult_const_impl.h @@ -61,6 +61,10 @@ static int secp256k1_wnaf_const(int *wnaf, secp256k1_scalar s, int w, int size) int bit; secp256k1_scalar neg_s; int not_neg_one; + + VERIFY_CHECK(w > 0); + VERIFY_CHECK(size > 0); + /* Note that we cannot handle even numbers by negating them to be odd, as is * done in other implementations, since if our scalars were specified to have * width < 256 for performance reasons, their negations would have width 256 @@ -93,7 +97,7 @@ static int secp256k1_wnaf_const(int *wnaf, secp256k1_scalar s, int w, int size) /* 4 */ u_last = secp256k1_scalar_shr_int(&s, w); - while (word * w < size) { + do { int sign; int even; @@ -109,7 +113,7 @@ static int secp256k1_wnaf_const(int *wnaf, secp256k1_scalar s, int w, int size) wnaf[word++] = u_last * global_sign; u_last = u; - } + } while (word * w < size); wnaf[word] = u * global_sign; VERIFY_CHECK(secp256k1_scalar_is_zero(&s));