diff options
author | thegeorg <thegeorg@yandex-team.com> | 2023-09-01 22:56:18 +0300 |
---|---|---|
committer | thegeorg <thegeorg@yandex-team.com> | 2023-09-01 23:10:27 +0300 |
commit | 41755088940129b1cbdda02718c50d190b2f87b4 (patch) | |
tree | 3cce3c4fcf0ca56e242ab5ec214f3380759b24be /contrib | |
parent | 8cdb17329e895b47a6d1b9c3b4a7c3656e27e83e (diff) | |
download | ydb-41755088940129b1cbdda02718c50d190b2f87b4.tar.gz |
Properly unpoison data generated by getrandom syscall
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/libs/libc_compat/CMakeLists.linux-aarch64.txt | 1 | ||||
-rw-r--r-- | contrib/libs/libc_compat/CMakeLists.linux-x86_64.txt | 1 | ||||
-rw-r--r-- | contrib/libs/libc_compat/random/getrandom.c | 11 | ||||
-rw-r--r-- | contrib/libs/libc_compat/ya.make | 3 |
4 files changed, 16 insertions, 0 deletions
diff --git a/contrib/libs/libc_compat/CMakeLists.linux-aarch64.txt b/contrib/libs/libc_compat/CMakeLists.linux-aarch64.txt index 66727f3e3e8..1617ebf599b 100644 --- a/contrib/libs/libc_compat/CMakeLists.linux-aarch64.txt +++ b/contrib/libs/libc_compat/CMakeLists.linux-aarch64.txt @@ -18,6 +18,7 @@ target_include_directories(contrib-libs-libc_compat PUBLIC ) target_link_libraries(contrib-libs-libc_compat PUBLIC contrib-libs-linux-headers + cpp-sanitizer-include ) target_sources(contrib-libs-libc_compat PRIVATE ${CMAKE_SOURCE_DIR}/contrib/libs/libc_compat/string.c diff --git a/contrib/libs/libc_compat/CMakeLists.linux-x86_64.txt b/contrib/libs/libc_compat/CMakeLists.linux-x86_64.txt index 66727f3e3e8..1617ebf599b 100644 --- a/contrib/libs/libc_compat/CMakeLists.linux-x86_64.txt +++ b/contrib/libs/libc_compat/CMakeLists.linux-x86_64.txt @@ -18,6 +18,7 @@ target_include_directories(contrib-libs-libc_compat PUBLIC ) target_link_libraries(contrib-libs-libc_compat PUBLIC contrib-libs-linux-headers + cpp-sanitizer-include ) target_sources(contrib-libs-libc_compat PRIVATE ${CMAKE_SOURCE_DIR}/contrib/libs/libc_compat/string.c diff --git a/contrib/libs/libc_compat/random/getrandom.c b/contrib/libs/libc_compat/random/getrandom.c index 2184fad7100..ba2d393c6b6 100644 --- a/contrib/libs/libc_compat/random/getrandom.c +++ b/contrib/libs/libc_compat/random/getrandom.c @@ -1,7 +1,18 @@ #include <sys/random.h> #include "syscall.h" +#if defined(__has_feature) + #if __has_feature(memory_sanitizer) + #include <sanitizer/msan_interface.h> + #endif +#endif + ssize_t getrandom(void *buf, size_t buflen, unsigned flags) { +#if defined(__has_feature) + #if __has_feature(memory_sanitizer) + __msan_unpoison(buf, buflen); + #endif +#endif return syscall(SYS_getrandom, buf, buflen, flags); } diff --git a/contrib/libs/libc_compat/ya.make b/contrib/libs/libc_compat/ya.make index 452f7d7ded4..44ebf490b07 100644 --- a/contrib/libs/libc_compat/ya.make +++ b/contrib/libs/libc_compat/ya.make @@ -136,6 +136,9 @@ IF (PROVIDE_REALLOCARRAY) ENDIF() IF (PROVIDE_GETRANDOM_GETENTROPY) + PEERDIR( + library/cpp/sanitizer/include + ) SRCS( random/getrandom.c random/getentropy.c |