Skip to content

Commit 4aedb97

Browse files
authored
[compiler-rt][rtsan] getsockname interception. (#123409)
1 parent 10cfd54 commit 4aedb97

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

compiler-rt/lib/rtsan/rtsan_interceptors_posix.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -829,6 +829,17 @@ 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,
834+
socklen_t *salen) {
835+
__rtsan_notify_intercepted_call("getsockname");
836+
return REAL(getsockname)(socket, sa, salen);
837+
}
838+
#define RTSAN_MAYBE_INTERCEPT_GETSOCKNAME INTERCEPT_FUNCTION(getsockname)
839+
#else
840+
#define RTSAN_MAYBE_INTERCEPT_GETSOCKNAME
841+
#endif
842+
832843
INTERCEPTOR(int, bind, int socket, const struct sockaddr *address,
833844
socklen_t address_len) {
834845
__rtsan_notify_intercepted_call("bind");
@@ -1189,6 +1200,7 @@ void __rtsan::InitializeInterceptors() {
11891200
INTERCEPT_FUNCTION(shutdown);
11901201
INTERCEPT_FUNCTION(socket);
11911202
RTSAN_MAYBE_INTERCEPT_ACCEPT4;
1203+
RTSAN_MAYBE_INTERCEPT_GETSOCKNAME;
11921204

11931205
RTSAN_MAYBE_INTERCEPT_SELECT;
11941206
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)