2020#include "field_5x52_int128_impl.h"
2121#endif
2222
23+ #if defined(VALGRIND ) && defined(VERIFY )
24+ # include <valgrind/memcheck.h>
25+ #endif
26+
2327/** Implements arithmetic modulo FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F,
2428 * represented as 5 uint64_t's in base 2^52. The values are allowed to contain >52 each. In particular,
2529 * each FieldElem has a 'magnitude' associated with it. Internally, a magnitude M means each element
@@ -451,6 +455,9 @@ static SECP256K1_INLINE void secp256k1_fe_cmov(secp256k1_fe *r, const secp256k1_
451455 uint64_t mask0 , mask1 ;
452456 mask0 = flag + ~((uint64_t )0 );
453457 mask1 = ~mask0 ;
458+ #if defined(VALGRIND ) && defined(VERIFY )
459+ VALGRIND_CHECK_MEM_IS_DEFINED (r -> n , sizeof (r -> n ));
460+ #endif
454461 r -> n [0 ] = (r -> n [0 ] & mask0 ) | (a -> n [0 ] & mask1 );
455462 r -> n [1 ] = (r -> n [1 ] & mask0 ) | (a -> n [1 ] & mask1 );
456463 r -> n [2 ] = (r -> n [2 ] & mask0 ) | (a -> n [2 ] & mask1 );
@@ -468,6 +475,9 @@ static SECP256K1_INLINE void secp256k1_fe_storage_cmov(secp256k1_fe_storage *r,
468475 uint64_t mask0 , mask1 ;
469476 mask0 = flag + ~((uint64_t )0 );
470477 mask1 = ~mask0 ;
478+ #if defined(VALGRIND ) && defined(VERIFY )
479+ VALGRIND_CHECK_MEM_IS_DEFINED (r -> n , sizeof (r -> n ));
480+ #endif
471481 r -> n [0 ] = (r -> n [0 ] & mask0 ) | (a -> n [0 ] & mask1 );
472482 r -> n [1 ] = (r -> n [1 ] & mask0 ) | (a -> n [1 ] & mask1 );
473483 r -> n [2 ] = (r -> n [2 ] & mask0 ) | (a -> n [2 ] & mask1 );
0 commit comments