mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-16 06:46:33 +00:00
Revert "[sanitizer] intercept getservent_r, getservbyname_r, getservbyport_r" (#133358)
Reverts llvm/llvm-project#133339
This commit is contained in:
parent
f359c0bde5
commit
52d7f14a89
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user