diff options
Diffstat (limited to 'compiler-rt')
4 files changed, 13 insertions, 3 deletions
diff --git a/compiler-rt/lib/msan/tests/msan_test.cc b/compiler-rt/lib/msan/tests/msan_test.cc index 273adb07df9..aee53841cdd 100644 --- a/compiler-rt/lib/msan/tests/msan_test.cc +++ b/compiler-rt/lib/msan/tests/msan_test.cc @@ -695,6 +695,18 @@ TEST(MemorySanitizer, accept) {    close(listen_socket);  } +TEST(MemorySanitizer, getaddrinfo) { +  struct addrinfo *ai; +  struct addrinfo hints; +  memset(&hints, 0, sizeof(hints)); +  hints.ai_family = AF_INET; +  int res = getaddrinfo("localhost", NULL, &hints, &ai); +  ASSERT_EQ(0, res); +  EXPECT_NOT_POISONED(*ai); +  ASSERT_EQ(sizeof(sockaddr_in), ai->ai_addrlen); +  EXPECT_NOT_POISONED(*(sockaddr_in*)ai->ai_addr);  +} +  #define EXPECT_HOSTENT_NOT_POISONED(he)        \    do {                                         \      EXPECT_NOT_POISONED(*(he));                \ diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc b/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc index 63659504e99..7586caceae6 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc @@ -766,7 +766,7 @@ INTERCEPTOR(int, getaddrinfo, char *node, char *service,      while (p) {        COMMON_INTERCEPTOR_WRITE_RANGE(ctx, p, sizeof(*p));        if (p->ai_addr) -        COMMON_INTERCEPTOR_WRITE_RANGE(ctx, p->ai_addr, struct_sockaddr_sz); +        COMMON_INTERCEPTOR_WRITE_RANGE(ctx, p->ai_addr, p->ai_addrlen);        if (p->ai_canonname)          COMMON_INTERCEPTOR_WRITE_RANGE(ctx, p->ai_canonname,                                         REAL(strlen)(p->ai_canonname) + 1); diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc index d6d095dcfc7..d42df01a8d0 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc @@ -58,7 +58,6 @@ namespace __sanitizer {    unsigned struct_sigaction_sz = sizeof(struct sigaction);    unsigned struct_itimerval_sz = sizeof(struct itimerval);    unsigned pthread_t_sz = sizeof(pthread_t); -  unsigned struct_sockaddr_sz = sizeof(struct sockaddr);  #if !SANITIZER_ANDROID    unsigned ucontext_t_sz = sizeof(ucontext_t); diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h index 0c761446c3f..eb5035f50ab 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h +++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h @@ -29,7 +29,6 @@ namespace __sanitizer {    extern unsigned siginfo_t_sz;    extern unsigned struct_itimerval_sz;    extern unsigned pthread_t_sz; -  extern unsigned struct_sockaddr_sz;  #if !SANITIZER_ANDROID    extern unsigned ucontext_t_sz;  | 

