Skip to content

Commit 8220222

Browse files
committed
[compiler-rt][rtsan] getsockname interception.
1 parent ce6e66d commit 8220222

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

compiler-rt/lib/rtsan/rtsan_interceptors_posix.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -829,6 +829,16 @@ INTERCEPTOR(int, getnameinfo, const struct sockaddr *sa, socklen_t salen,
829829
return REAL(getnameinfo)(sa, salen, host, hostlen, serv, servlen, flags);
830830
}
831831

832+
#if SANITIZER_INTERCEPT_GETSOCKNAME
833+
INTERCEPTOR(int, getsockname, int socket, struct sockaddr *sa, socklen_t *salen) {
834+
__rtsan_notify_intercepted_call("getsockname");
835+
return REAL(getsockname)(socket, sa, salen);
836+
}
837+
#define RTSAN_MAYBE_INTERCEPT_GETSOCKNAME INTERCEPT_FUNCTION(getsockname)
838+
#else
839+
#define RTSAN_MAYBE_INTERCEPT_GETSOCKNAME
840+
#endif
841+
832842
INTERCEPTOR(int, bind, int socket, const struct sockaddr *address,
833843
socklen_t address_len) {
834844
__rtsan_notify_intercepted_call("bind");
@@ -1189,6 +1199,7 @@ void __rtsan::InitializeInterceptors() {
11891199
INTERCEPT_FUNCTION(shutdown);
11901200
INTERCEPT_FUNCTION(socket);
11911201
RTSAN_MAYBE_INTERCEPT_ACCEPT4;
1202+
RTSAN_MAYBE_INTERCEPT_GETSOCKNAME;
11921203

11931204
RTSAN_MAYBE_INTERCEPT_SELECT;
11941205
INTERCEPT_FUNCTION(pselect);

compiler-rt/lib/rtsan/tests/rtsan_test_interceptors_posix.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1153,6 +1153,16 @@ TEST(TestRtsanInterceptors, ShutdownOnASocketDiesWhenRealtime) {
11531153
ExpectNonRealtimeSurvival(Func);
11541154
}
11551155

1156+
#if SANITIZER_INTERCEPT_GETSOCKNAME
1157+
TEST(TestRtsanInterceptors, GetsocknameOnASocketDiesWhenRealtime) {
1158+
sockaddr addr{};
1159+
socklen_t len{};
1160+
auto Func = [&]() { getsockname(0, &addr, &len); };
1161+
ExpectRealtimeDeath(Func, "getsockname");
1162+
ExpectNonRealtimeSurvival(Func);
1163+
}
1164+
#endif
1165+
11561166
/*
11571167
I/O Multiplexing
11581168
*/

0 commit comments

Comments
 (0)