Skip to content

Commit cdd4681

Browse files
committed
Example 2 - avoid optimizing out stack variable clearing by using the 'volatile' keyword
1 parent 72c0ebb commit cdd4681

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

src/group_impl.h

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,8 +214,13 @@ static void secp256k1_ge_clear(secp256k1_ge *r) {
214214
secp256k1_fe_clear(&r->y);
215215
}
216216

217-
static void __attribute__((optimize("O0"))) secp256k1_secure_clear(void *s, size_t n) {
218-
(void) memset(s, 0, n);
217+
typedef void *(*memset_t)(void *, int, size_t);
218+
219+
static volatile memset_t secure_memset = memset;
220+
221+
static void secp256k1_secure_clear(void *s, size_t n) {
222+
(void) secure_memset(s, 0, n);
223+
219224
}
220225

221226
static void secp256k1_int_clear(int *r) {

0 commit comments

Comments
 (0)