@@ -302,6 +302,9 @@ INTERCEPTOR(int, fpurge, FILE *stream) {
302302 __rtsan_notify_intercepted_call (" fpurge" );
303303 return REAL (fpurge)(stream);
304304}
305+ #define RTSAN_MAYBE_INTERCEPT_FPURGE INTERCEPT_FUNCTION (fpurge)
306+ #else
307+ #define RTSAN_MAYBE_INTERCEPT_FPURGE
305308#endif
306309
307310INTERCEPTOR (FILE *, fdopen, int fd, const char *mode) {
@@ -840,6 +843,17 @@ INTERCEPTOR(int, getsockname, int socket, struct sockaddr *sa,
840843#define RTSAN_MAYBE_INTERCEPT_GETSOCKNAME
841844#endif
842845
846+ #if SANITIZER_INTERCEPT_GETPEERNAME
847+ INTERCEPTOR (int , getpeername, int socket, struct sockaddr *sa,
848+ socklen_t *salen) {
849+ __rtsan_notify_intercepted_call (" getpeername" );
850+ return REAL (getpeername)(socket, sa, salen);
851+ }
852+ #define RTSAN_MAYBE_INTERCEPT_GETPEERNAME INTERCEPT_FUNCTION (getpeername)
853+ #else
854+ #define RTSAN_MAYBE_INTERCEPT_GETPEERNAME
855+ #endif
856+
843857INTERCEPTOR (int , bind, int socket, const struct sockaddr *address,
844858 socklen_t address_len) {
845859 __rtsan_notify_intercepted_call (" bind" );
@@ -879,6 +893,17 @@ INTERCEPTOR(ssize_t, sendmsg, int socket, const struct msghdr *message,
879893 return REAL (sendmsg)(socket, message, flags);
880894}
881895
896+ #if SANITIZER_INTERCEPT_SENDMMSG
897+ INTERCEPTOR (int , sendmmsg, int socket, struct mmsghdr *message,
898+ unsigned int len, int flags) {
899+ __rtsan_notify_intercepted_call (" sendmmsg" );
900+ return REAL (sendmmsg)(socket, message, len, flags);
901+ }
902+ #define RTSAN_MAYBE_INTERCEPT_SENDMMSG INTERCEPT_FUNCTION (sendmmsg)
903+ #else
904+ #define RTSAN_MAYBE_INTERCEPT_SENDMMSG
905+ #endif
906+
882907INTERCEPTOR (ssize_t , sendto, int socket, const void *buffer, size_t length,
883908 int flags, const struct sockaddr *dest_addr, socklen_t dest_len) {
884909 __rtsan_notify_intercepted_call (" sendto" );
@@ -901,6 +926,17 @@ INTERCEPTOR(ssize_t, recvmsg, int socket, struct msghdr *message, int flags) {
901926 return REAL (recvmsg)(socket, message, flags);
902927}
903928
929+ #if SANITIZER_INTERCEPT_RECVMMSG
930+ INTERCEPTOR (int , recvmmsg, int socket, struct mmsghdr *message,
931+ unsigned int len, int flags, struct timespec *timeout) {
932+ __rtsan_notify_intercepted_call (" recvmmsg" );
933+ return REAL (recvmmsg)(socket, message, len, flags, timeout);
934+ }
935+ #define RTSAN_MAYBE_INTERCEPT_RECVMMSG INTERCEPT_FUNCTION (recvmmsg)
936+ #else
937+ #define RTSAN_MAYBE_INTERCEPT_RECVMMSG
938+ #endif
939+
904940INTERCEPTOR (int , shutdown, int socket, int how) {
905941 __rtsan_notify_intercepted_call (" shutdown" );
906942 return REAL (shutdown)(socket, how);
@@ -1031,6 +1067,16 @@ INTERCEPTOR(int, pipe, int pipefd[2]) {
10311067 return REAL (pipe)(pipefd);
10321068}
10331069
1070+ #if !SANITIZER_APPLE
1071+ INTERCEPTOR (int , pipe2, int pipefd[2 ], int flags) {
1072+ __rtsan_notify_intercepted_call (" pipe2" );
1073+ return REAL (pipe2)(pipefd, flags);
1074+ }
1075+ #define RTSAN_MAYBE_INTERCEPT_PIPE2 INTERCEPT_FUNCTION (pipe2)
1076+ #else
1077+ #define RTSAN_MAYBE_INTERCEPT_PIPE2
1078+ #endif
1079+
10341080INTERCEPTOR (int , mkfifo, const char *pathname, mode_t mode) {
10351081 __rtsan_notify_intercepted_call (" mkfifo" );
10361082 return REAL (mkfifo)(pathname, mode);
@@ -1133,6 +1179,8 @@ void __rtsan::InitializeInterceptors() {
11331179 INTERCEPT_FUNCTION (puts);
11341180 INTERCEPT_FUNCTION (fputs);
11351181 INTERCEPT_FUNCTION (fflush);
1182+ RTSAN_MAYBE_INTERCEPT_FPURGE;
1183+ RTSAN_MAYBE_INTERCEPT_PIPE2;
11361184 INTERCEPT_FUNCTION (fdopen);
11371185 INTERCEPT_FUNCTION (freopen);
11381186 RTSAN_MAYBE_INTERCEPT_FOPENCOOKIE;
@@ -1194,13 +1242,16 @@ void __rtsan::InitializeInterceptors() {
11941242 INTERCEPT_FUNCTION (recv);
11951243 INTERCEPT_FUNCTION (recvfrom);
11961244 INTERCEPT_FUNCTION (recvmsg);
1245+ RTSAN_MAYBE_INTERCEPT_RECVMMSG;
11971246 INTERCEPT_FUNCTION (send);
11981247 INTERCEPT_FUNCTION (sendmsg);
1248+ RTSAN_MAYBE_INTERCEPT_SENDMMSG;
11991249 INTERCEPT_FUNCTION (sendto);
12001250 INTERCEPT_FUNCTION (shutdown);
12011251 INTERCEPT_FUNCTION (socket);
12021252 RTSAN_MAYBE_INTERCEPT_ACCEPT4;
12031253 RTSAN_MAYBE_INTERCEPT_GETSOCKNAME;
1254+ RTSAN_MAYBE_INTERCEPT_GETPEERNAME;
12041255
12051256 RTSAN_MAYBE_INTERCEPT_SELECT;
12061257 INTERCEPT_FUNCTION (pselect);
0 commit comments