Skip to content

Commit 152ff37

Browse files
committed
[msan] Skip memcpy interceptor called by gethostname
No test as reproducer requires particular glibc build. Reviewed By: eugenis Differential Revision: https://reviews.llvm.org/D88284
1 parent 1bec6eb commit 152ff37

File tree

3 files changed

+10
-4
lines changed

3 files changed

+10
-4
lines changed

compiler-rt/lib/msan/msan_interceptors.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -827,7 +827,7 @@ INTERCEPTOR(int, prlimit64, int pid, int resource, void *new_rlimit,
827827
INTERCEPTOR(int, gethostname, char *name, SIZE_T len) {
828828
ENSURE_MSAN_INITED();
829829
int res = REAL(gethostname)(name, len);
830-
if (!res) {
830+
if (!res || (res == -1 && errno == errno_ENAMETOOLONG)) {
831831
SIZE_T real_len = REAL(strnlen)(name, len);
832832
if (real_len < len)
833833
++real_len;

compiler-rt/lib/msan/tests/msan_test.cpp

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3535,9 +3535,14 @@ TEST(MemorySanitizer, uname) {
35353535
}
35363536

35373537
TEST(MemorySanitizer, gethostname) {
3538-
char buf[100];
3539-
int res = gethostname(buf, 100);
3540-
ASSERT_EQ(0, res);
3538+
char buf[1000];
3539+
EXPECT_EQ(-1, gethostname(buf, 1));
3540+
EXPECT_EQ(ENAMETOOLONG, errno);
3541+
EXPECT_NOT_POISONED(buf[0]);
3542+
EXPECT_POISONED(buf[1]);
3543+
3544+
__msan_poison(buf, sizeof(buf));
3545+
EXPECT_EQ(0, gethostname(buf, sizeof(buf)));
35413546
EXPECT_NOT_POISONED(strlen(buf));
35423547
}
35433548

compiler-rt/lib/sanitizer_common/sanitizer_errno_codes.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ namespace __sanitizer {
2424
#define errno_ENOMEM 12
2525
#define errno_EBUSY 16
2626
#define errno_EINVAL 22
27+
#define errno_ENAMETOOLONG 36
2728

2829
// Those might not present or their value differ on different platforms.
2930
extern const int errno_EOWNERDEAD;

0 commit comments

Comments
 (0)