@@ -462,6 +462,14 @@ static void secp256k1_scalar_reduce_512(secp256k1_scalar *r, const uint64_t *l)
462
462
: "S" (l ), "i" (SECP256K1_N_C_0 ), "i" (SECP256K1_N_C_1 )
463
463
: "rax" , "rdx" , "r8" , "r9" , "r10" , "r11" , "r12" , "r13" , "r14" , "cc" );
464
464
465
+ SECP256K1_CHECKMEM_MSAN_DEFINE (& m0 , sizeof (m0 ));
466
+ SECP256K1_CHECKMEM_MSAN_DEFINE (& m1 , sizeof (m1 ));
467
+ SECP256K1_CHECKMEM_MSAN_DEFINE (& m2 , sizeof (m2 ));
468
+ SECP256K1_CHECKMEM_MSAN_DEFINE (& m3 , sizeof (m3 ));
469
+ SECP256K1_CHECKMEM_MSAN_DEFINE (& m4 , sizeof (m4 ));
470
+ SECP256K1_CHECKMEM_MSAN_DEFINE (& m5 , sizeof (m5 ));
471
+ SECP256K1_CHECKMEM_MSAN_DEFINE (& m6 , sizeof (m6 ));
472
+
465
473
/* Reduce 385 bits into 258. */
466
474
__asm__ __volatile__(
467
475
/* Preload */
@@ -541,6 +549,12 @@ static void secp256k1_scalar_reduce_512(secp256k1_scalar *r, const uint64_t *l)
541
549
: "g" (m0 ), "g" (m1 ), "g" (m2 ), "g" (m3 ), "g" (m4 ), "g" (m5 ), "g" (m6 ), "i" (SECP256K1_N_C_0 ), "i" (SECP256K1_N_C_1 )
542
550
: "rax" , "rdx" , "r8" , "r9" , "r10" , "r11" , "r12" , "r13" , "cc" );
543
551
552
+ SECP256K1_CHECKMEM_MSAN_DEFINE (& p0 , sizeof (p0 ));
553
+ SECP256K1_CHECKMEM_MSAN_DEFINE (& p1 , sizeof (p1 ));
554
+ SECP256K1_CHECKMEM_MSAN_DEFINE (& p2 , sizeof (p2 ));
555
+ SECP256K1_CHECKMEM_MSAN_DEFINE (& p3 , sizeof (p3 ));
556
+ SECP256K1_CHECKMEM_MSAN_DEFINE (& p4 , sizeof (p4 ));
557
+
544
558
/* Reduce 258 bits into 256. */
545
559
__asm__ __volatile__(
546
560
/* Preload */
@@ -586,6 +600,10 @@ static void secp256k1_scalar_reduce_512(secp256k1_scalar *r, const uint64_t *l)
586
600
: "=g" (c )
587
601
: "g" (p0 ), "g" (p1 ), "g" (p2 ), "g" (p3 ), "g" (p4 ), "D" (r ), "i" (SECP256K1_N_C_0 ), "i" (SECP256K1_N_C_1 )
588
602
: "rax" , "rdx" , "r8" , "r9" , "r10" , "cc" , "memory" );
603
+
604
+ SECP256K1_CHECKMEM_MSAN_DEFINE (r , sizeof (* r ));
605
+ SECP256K1_CHECKMEM_MSAN_DEFINE (& c , sizeof (c ));
606
+
589
607
#else
590
608
secp256k1_uint128 c128 ;
591
609
uint64_t c , c0 , c1 , c2 ;
0 commit comments