diff --git a/library/entropy_poll.c b/library/entropy_poll.c index 92c757ec7..073acad8f 100644 --- a/library/entropy_poll.c +++ b/library/entropy_poll.c @@ -81,8 +81,16 @@ int mbedtls_platform_entropy_poll( void *data, unsigned char *output, size_t len #include #if defined(SYS_getrandom) #define HAVE_GETRANDOM + static int getrandom_wrapper( void *buf, size_t buflen, unsigned int flags ) { + /* MemSan cannot understand that the syscall writes to the buffer */ +#if defined(__has_feature) +#if __has_feature(memory_sanitizer) + memset( buf, 0, buflen ); +#endif +#endif + return( syscall( SYS_getrandom, buf, buflen, flags ) ); } diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh index 448d519d4..1fb00a9ab 100755 --- a/tests/scripts/all.sh +++ b/tests/scripts/all.sh @@ -247,7 +247,6 @@ msg "build: MSan (clang)" # ~ 1 min 20s cleanup cp "$CONFIG_H" "$CONFIG_BAK" scripts/config.pl unset MBEDTLS_AESNI_C # memsan doesn't grok asm -scripts/config.pl set MBEDTLS_NO_PLATFORM_ENTROPY # memsan vs getrandom() CC=clang cmake -D CMAKE_BUILD_TYPE:String=MemSan . make