mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-10 19:34:29 +00:00
[sanitizer] Fix getpwuid_r (and similar) interceptors missing one of the arguments.
llvm-svn: 201410
This commit is contained in:
parent
cf907f4d38
commit
a21280307f
@ -3006,6 +3006,20 @@ TEST(MemorySanitizer, getpwuid) {
|
||||
ASSERT_EQ(p->pw_uid, 0);
|
||||
}
|
||||
|
||||
TEST(MemorySanitizer, getpwuid_r) {
|
||||
struct passwd pwd;
|
||||
struct passwd *pwdres;
|
||||
char buf[10000];
|
||||
int res = getpwuid_r(0, &pwd, buf, sizeof(buf), &pwdres);
|
||||
ASSERT_EQ(0, res);
|
||||
EXPECT_NOT_POISONED(pwd.pw_name);
|
||||
ASSERT_TRUE(pwd.pw_name != NULL);
|
||||
EXPECT_NOT_POISONED(pwd.pw_name[0]);
|
||||
EXPECT_NOT_POISONED(pwd.pw_uid);
|
||||
ASSERT_EQ(pwd.pw_uid, 0);
|
||||
EXPECT_NOT_POISONED(pwdres);
|
||||
}
|
||||
|
||||
TEST(MemorySanitizer, getpwnam_r) {
|
||||
struct passwd pwd;
|
||||
struct passwd *pwdres;
|
||||
@ -3017,6 +3031,7 @@ TEST(MemorySanitizer, getpwnam_r) {
|
||||
EXPECT_NOT_POISONED(pwd.pw_name[0]);
|
||||
EXPECT_NOT_POISONED(pwd.pw_uid);
|
||||
ASSERT_EQ(pwd.pw_uid, 0);
|
||||
EXPECT_NOT_POISONED(pwdres);
|
||||
}
|
||||
|
||||
TEST(MemorySanitizer, getpwnam_r_positive) {
|
||||
@ -3040,6 +3055,7 @@ TEST(MemorySanitizer, getgrnam_r) {
|
||||
ASSERT_TRUE(grp.gr_name != NULL);
|
||||
EXPECT_NOT_POISONED(grp.gr_name[0]);
|
||||
EXPECT_NOT_POISONED(grp.gr_gid);
|
||||
EXPECT_NOT_POISONED(grpres);
|
||||
}
|
||||
|
||||
TEST(MemorySanitizer, getgroups) {
|
||||
|
@ -917,6 +917,7 @@ INTERCEPTOR(int, getpwnam_r, const char *name, void *pwd, char *buf,
|
||||
COMMON_INTERCEPTOR_WRITE_RANGE(ctx, pwd, struct_passwd_sz);
|
||||
COMMON_INTERCEPTOR_WRITE_RANGE(ctx, buf, buflen);
|
||||
}
|
||||
if (result) COMMON_INTERCEPTOR_WRITE_RANGE(ctx, result, sizeof(*result));
|
||||
return res;
|
||||
}
|
||||
INTERCEPTOR(int, getpwuid_r, u32 uid, void *pwd, char *buf, SIZE_T buflen,
|
||||
@ -928,6 +929,7 @@ INTERCEPTOR(int, getpwuid_r, u32 uid, void *pwd, char *buf, SIZE_T buflen,
|
||||
COMMON_INTERCEPTOR_WRITE_RANGE(ctx, pwd, struct_passwd_sz);
|
||||
COMMON_INTERCEPTOR_WRITE_RANGE(ctx, buf, buflen);
|
||||
}
|
||||
if (result) COMMON_INTERCEPTOR_WRITE_RANGE(ctx, result, sizeof(*result));
|
||||
return res;
|
||||
}
|
||||
INTERCEPTOR(int, getgrnam_r, const char *name, void *grp, char *buf,
|
||||
@ -940,6 +942,7 @@ INTERCEPTOR(int, getgrnam_r, const char *name, void *grp, char *buf,
|
||||
COMMON_INTERCEPTOR_WRITE_RANGE(ctx, grp, struct_group_sz);
|
||||
COMMON_INTERCEPTOR_WRITE_RANGE(ctx, buf, buflen);
|
||||
}
|
||||
if (result) COMMON_INTERCEPTOR_WRITE_RANGE(ctx, result, sizeof(*result));
|
||||
return res;
|
||||
}
|
||||
INTERCEPTOR(int, getgrgid_r, u32 gid, void *grp, char *buf, SIZE_T buflen,
|
||||
@ -951,6 +954,7 @@ INTERCEPTOR(int, getgrgid_r, u32 gid, void *grp, char *buf, SIZE_T buflen,
|
||||
COMMON_INTERCEPTOR_WRITE_RANGE(ctx, grp, struct_group_sz);
|
||||
COMMON_INTERCEPTOR_WRITE_RANGE(ctx, buf, buflen);
|
||||
}
|
||||
if (result) COMMON_INTERCEPTOR_WRITE_RANGE(ctx, result, sizeof(*result));
|
||||
return res;
|
||||
}
|
||||
#define INIT_GETPWNAM_R_AND_FRIENDS \
|
||||
|
Loading…
x
Reference in New Issue
Block a user