Revert "[sanitizer] intercept getservent_r, getservbyname_r, getservbyport_r" (#133358)

Reverts llvm/llvm-project#133339
This commit is contained in:
Florian Mayer 2025-03-27 19:51:04 -07:00 committed by GitHub
parent f359c0bde5
commit 52d7f14a89
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 0 additions and 145 deletions

View File

@ -4908,74 +4908,5 @@ TEST(MemorySanitizer, timer_create) {
EXPECT_POISONED(timer2);
timer_delete(timer);
}
TEST(MemorySanitizer, getservent_r) {
struct servent result_buf;
struct servent *result;
char buf[1024];
EXPECT_POISONED(result_buf);
EXPECT_POISONED(result);
EXPECT_POISONED(buf);
ASSERT_EQ(getservent_r(&result_buf, buf, sizeof(buf), &result), 0);
EXPECT_NOT_POISONED(result);
ASSERT_NE(result, nullptr);
EXPECT_NOT_POISONED(result_buf);
EXPECT_NOT_POISONED(buf);
}
TEST(MemorySanitizer, getservbyname_r) {
struct servent result_buf;
struct servent *result;
char buf[1024];
EXPECT_POISONED(result_buf);
EXPECT_POISONED(result);
EXPECT_POISONED(buf);
ASSERT_EQ(
getservbyname_r("ssh", nullptr, &result_buf, buf, sizeof(buf), &result),
0);
EXPECT_NOT_POISONED(result);
// If this fails, check /etc/services if "ssh" exists. I picked this because
// it should exist everywhere, if it doesn't, I am sorry. Disable the test
// then please.
ASSERT_NE(result, nullptr);
EXPECT_NOT_POISONED(result_buf);
EXPECT_NOT_POISONED(buf);
}
TEST(MemorySanitizer, getservbyname_r_unknown) {
struct servent result_buf;
struct servent *result;
char buf[1024];
EXPECT_POISONED(result_buf);
EXPECT_POISONED(result);
EXPECT_POISONED(buf);
ASSERT_EQ(getservbyname_r("invalidhadfuiasdhi", nullptr, &result_buf, buf,
sizeof(buf), &result),
0);
EXPECT_NOT_POISONED(result);
ASSERT_EQ(result, nullptr);
EXPECT_POISONED(result_buf);
EXPECT_POISONED(buf);
}
TEST(MemorySanitizer, getservbyport_r) {
struct servent result_buf;
struct servent *result;
char buf[1024];
EXPECT_POISONED(result_buf);
EXPECT_POISONED(result);
EXPECT_POISONED(buf);
ASSERT_EQ(getservbyport_r(htons(22), nullptr, &result_buf, buf, sizeof(buf),
&result),
0);
EXPECT_NOT_POISONED(result);
// If this fails, check /etc/services if "ssh" exists. I picked this because
// it should exist everywhere, if it doesn't, I am sorry. Disable the test
// then please.
ASSERT_NE(result, nullptr);
EXPECT_NOT_POISONED(result_buf);
EXPECT_NOT_POISONED(buf);
}
#endif
} // namespace

View File

@ -10279,66 +10279,6 @@ INTERCEPTOR(SSIZE_T, freadlink, int fd, char *buf, SIZE_T bufsiz) {
# define INIT_FREADLINK
#endif
UNUSED static void HandleGetServentReentrantResult(
void *ctx, int res, struct __sanitizer_servent *result_buf, char *buf,
SIZE_T buflen, struct __sanitizer_servent **result) {
if (res)
return;
COMMON_INTERCEPTOR_WRITE_RANGE(ctx, (char *)result, sizeof(void *));
if (*result) {
COMMON_INTERCEPTOR_WRITE_RANGE(ctx, (char *)*result,
sizeof(__sanitizer_servent));
COMMON_INTERCEPTOR_WRITE_RANGE(ctx, buf, buflen);
}
}
#if SANITIZER_INTERCEPT_GETSERVENT_R
INTERCEPTOR(int, getservent_r, struct __sanitizer_servent *result_buf,
char *buf, SIZE_T buflen, struct __sanitizer_servent **result) {
void *ctx;
COMMON_INTERCEPTOR_ENTER(ctx, getservent_r, result_buf, buf, buflen, result);
int res = REAL(getservent_r)(result_buf, buf, buflen, result);
HandleGetServentReentrantResult(ctx, res, result_buf, buf, buflen, result);
return res;
}
# define INIT_GETSERVENT_R COMMON_INTERCEPT_FUNCTION(getservent_r)
#else
# define INIT_GETSERVENT_R
#endif
#if SANITIZER_INTERCEPT_GETSERVBYNAME_R
INTERCEPTOR(int, getservbyname_r, const char *name, const char *proto,
struct __sanitizer_servent *result_buf, char *buf, SIZE_T buflen,
struct __sanitizer_servent **result) {
void *ctx;
COMMON_INTERCEPTOR_ENTER(ctx, getservbyname_r, name, proto, result_buf, buf,
buflen, result);
COMMON_INTERCEPTOR_READ_STRING(ctx, name, internal_strlen(name));
int res = REAL(getservbyname_r)(name, proto, result_buf, buf, buflen, result);
HandleGetServentReentrantResult(ctx, res, result_buf, buf, buflen, result);
return res;
}
# define INIT_GETSERVBYNAME_R COMMON_INTERCEPT_FUNCTION(getservbyname_r)
#else
# define INIT_GETSERVBYNAME_R
#endif
#if SANITIZER_INTERCEPT_GETSERVBYPORT_R
INTERCEPTOR(int, getservbyport_r, int port, const char *proto,
struct __sanitizer_servent *result_buf, char *buf, SIZE_T buflen,
struct __sanitizer_servent **result) {
void *ctx;
COMMON_INTERCEPTOR_ENTER(ctx, getservbyport_r, port, proto, result_buf, buf,
buflen, result);
int res = REAL(getservbyport_r)(port, proto, result_buf, buf, buflen, result);
HandleGetServentReentrantResult(ctx, res, result_buf, buf, buflen, result);
return res;
}
# define INIT_GETSERVBYPORT_R COMMON_INTERCEPT_FUNCTION(getservbyport_r)
#else
# define INIT_GETSERVBYPORT_R
#endif
#include "sanitizer_common_interceptors_netbsd_compat.inc"
namespace __sanitizer {
@ -10664,7 +10604,4 @@ static void InitializeCommonInterceptors() {
INIT_FREADLINK;
INIT___PRINTF_CHK;
INIT_GETSERVENT_R;
INIT_GETSERVBYNAME_R;
INIT_GETSERVBYPORT_R;
}

View File

@ -645,10 +645,6 @@ SANITIZER_WEAK_IMPORT void *aligned_alloc(__sanitizer::usize __alignment,
# define SI_MAC_OS_DEPLOYMENT_MIN_13_00 0
#endif
#define SANITIZER_INTERCEPT_FREADLINK (SI_MAC && SI_MAC_OS_DEPLOYMENT_MIN_13_00)
#define SANITIZER_INTERCEPT_GETSERVENT_R SI_GLIBC
#define SANITIZER_INTERCEPT_GETSERVBYNAME_R SI_GLIBC
#define SANITIZER_INTERCEPT_GETSERVBYPORT_R SI_GLIBC
// This macro gives a way for downstream users to override the above
// interceptor macros irrespective of the platform they are on. They have
// to do two things:

View File

@ -1509,15 +1509,6 @@ extern unsigned IOCTL_KIOCSOUND;
extern unsigned IOCTL_PIO_SCRNMAP;
#endif
# if SANITIZER_GLIBC
struct __sanitizer_servent {
char *s_name;
char **s_aliases;
int s_port;
char *s_proto;
};
# endif
extern const int si_SEGV_MAPERR;
extern const int si_SEGV_ACCERR;
} // namespace __sanitizer