aboutsummaryrefslogtreecommitdiffstats
path: root/contrib
diff options
context:
space:
mode:
authorthegeorg <thegeorg@yandex-team.com>2023-09-01 22:56:18 +0300
committerthegeorg <thegeorg@yandex-team.com>2023-09-01 23:10:27 +0300
commit41755088940129b1cbdda02718c50d190b2f87b4 (patch)
tree3cce3c4fcf0ca56e242ab5ec214f3380759b24be /contrib
parent8cdb17329e895b47a6d1b9c3b4a7c3656e27e83e (diff)
downloadydb-41755088940129b1cbdda02718c50d190b2f87b4.tar.gz
Properly unpoison data generated by getrandom syscall
Diffstat (limited to 'contrib')
-rw-r--r--contrib/libs/libc_compat/CMakeLists.linux-aarch64.txt1
-rw-r--r--contrib/libs/libc_compat/CMakeLists.linux-x86_64.txt1
-rw-r--r--contrib/libs/libc_compat/random/getrandom.c11
-rw-r--r--contrib/libs/libc_compat/ya.make3
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