Skip to content

Commit 9048def

Browse files
committed
Avoid undefined shift behaviour
1 parent d220062 commit 9048def

File tree

2 files changed

+2
-2
lines changed

2 files changed

+2
-2
lines changed

src/scalar_4x64_impl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ static void secp256k1_scalar_add(secp256k1_scalar_t *r, const secp256k1_scalar_t
9595

9696
static void secp256k1_scalar_add_bit(secp256k1_scalar_t *r, unsigned int bit) {
9797
VERIFY_CHECK(bit < 256);
98-
uint128_t t = (uint128_t)r->d[0] + (((uint64_t)((bit >> 6) == 0)) << bit);
98+
uint128_t t = (uint128_t)r->d[0] + (((uint64_t)((bit >> 6) == 0)) << (bit & 0x3F));
9999
r->d[0] = t & 0xFFFFFFFFFFFFFFFFULL; t >>= 64;
100100
t += (uint128_t)r->d[1] + (((uint64_t)((bit >> 6) == 1)) << (bit & 0x3F));
101101
r->d[1] = t & 0xFFFFFFFFFFFFFFFFULL; t >>= 64;

src/scalar_8x32_impl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ static void secp256k1_scalar_add(secp256k1_scalar_t *r, const secp256k1_scalar_t
133133

134134
static void secp256k1_scalar_add_bit(secp256k1_scalar_t *r, unsigned int bit) {
135135
VERIFY_CHECK(bit < 256);
136-
uint64_t t = (uint64_t)r->d[0] + (((uint32_t)((bit >> 5) == 0)) << bit);
136+
uint64_t t = (uint64_t)r->d[0] + (((uint32_t)((bit >> 5) == 0)) << (bit & 0x1F));
137137
r->d[0] = t & 0xFFFFFFFFULL; t >>= 32;
138138
t += (uint64_t)r->d[1] + (((uint32_t)((bit >> 5) == 1)) << (bit & 0x1F));
139139
r->d[1] = t & 0xFFFFFFFFULL; t >>= 32;

0 commit comments

Comments
 (0)