aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2018-04-05 18:49:21 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2018-04-05 18:49:21 +0000
commit45cd095f9d3b2332611eb3bc19907ad4f33950e4 (patch)
tree4963264932de027a6f0cf415b504685d2dd9d519
parent51b867612ecdb99a9b7473a752e452773cb690a0 (diff)
parent4b30f14b3331eadb96ef5d353c2902de26408566 (diff)
downloadbionic-45cd095f9d3b2332611eb3bc19907ad4f33950e4.tar.gz
Merge "Do not check user/group names in pwd/grp tests for OEM uid/gids" into pi-dev
-rw-r--r--tests/grp_pwd_test.cpp100
1 files changed, 61 insertions, 39 deletions
diff --git a/tests/grp_pwd_test.cpp b/tests/grp_pwd_test.cpp
index 12d4b7ff0..fa8a662f2 100644
--- a/tests/grp_pwd_test.cpp
+++ b/tests/grp_pwd_test.cpp
@@ -44,9 +44,12 @@ enum uid_type_t {
#if defined(__BIONIC__)
-static void check_passwd(const passwd* pwd, const char* username, uid_t uid, uid_type_t uid_type) {
+static void check_passwd(const passwd* pwd, const char* username, uid_t uid, uid_type_t uid_type,
+ bool check_username) {
ASSERT_TRUE(pwd != NULL);
- EXPECT_STREQ(username, pwd->pw_name);
+ if (check_username) {
+ EXPECT_STREQ(username, pwd->pw_name);
+ }
EXPECT_EQ(uid, pwd->pw_uid);
EXPECT_EQ(uid, pwd->pw_gid);
EXPECT_EQ(NULL, pwd->pw_passwd);
@@ -62,23 +65,26 @@ static void check_passwd(const passwd* pwd, const char* username, uid_t uid, uid
EXPECT_STREQ("/system/bin/sh", pwd->pw_shell);
}
-static void check_getpwuid(const char* username, uid_t uid, uid_type_t uid_type) {
+static void check_getpwuid(const char* username, uid_t uid, uid_type_t uid_type,
+ bool check_username) {
errno = 0;
passwd* pwd = getpwuid(uid);
ASSERT_EQ(0, errno);
SCOPED_TRACE("getpwuid");
- check_passwd(pwd, username, uid, uid_type);
+ check_passwd(pwd, username, uid, uid_type, check_username);
}
-static void check_getpwnam(const char* username, uid_t uid, uid_type_t uid_type) {
+static void check_getpwnam(const char* username, uid_t uid, uid_type_t uid_type,
+ bool check_username) {
errno = 0;
passwd* pwd = getpwnam(username);
ASSERT_EQ(0, errno);
SCOPED_TRACE("getpwnam");
- check_passwd(pwd, username, uid, uid_type);
+ check_passwd(pwd, username, uid, uid_type, check_username);
}
-static void check_getpwuid_r(const char* username, uid_t uid, uid_type_t uid_type) {
+static void check_getpwuid_r(const char* username, uid_t uid, uid_type_t uid_type,
+ bool check_username) {
passwd pwd_storage;
char buf[512];
int result;
@@ -89,10 +95,11 @@ static void check_getpwuid_r(const char* username, uid_t uid, uid_type_t uid_typ
ASSERT_EQ(0, result);
ASSERT_EQ(0, errno);
SCOPED_TRACE("getpwuid_r");
- check_passwd(pwd, username, uid, uid_type);
+ check_passwd(pwd, username, uid, uid_type, check_username);
}
-static void check_getpwnam_r(const char* username, uid_t uid, uid_type_t uid_type) {
+static void check_getpwnam_r(const char* username, uid_t uid, uid_type_t uid_type,
+ bool check_username) {
passwd pwd_storage;
char buf[512];
int result;
@@ -103,14 +110,15 @@ static void check_getpwnam_r(const char* username, uid_t uid, uid_type_t uid_typ
ASSERT_EQ(0, result);
ASSERT_EQ(0, errno);
SCOPED_TRACE("getpwnam_r");
- check_passwd(pwd, username, uid, uid_type);
+ check_passwd(pwd, username, uid, uid_type, check_username);
}
-static void check_get_passwd(const char* username, uid_t uid, uid_type_t uid_type) {
- check_getpwuid(username, uid, uid_type);
- check_getpwnam(username, uid, uid_type);
- check_getpwuid_r(username, uid, uid_type);
- check_getpwnam_r(username, uid, uid_type);
+static void check_get_passwd(const char* username, uid_t uid, uid_type_t uid_type,
+ bool check_username = true) {
+ check_getpwuid(username, uid, uid_type, check_username);
+ check_getpwnam(username, uid, uid_type, check_username);
+ check_getpwuid_r(username, uid, uid_type, check_username);
+ check_getpwnam_r(username, uid, uid_type, check_username);
}
#else // !defined(__BIONIC__)
@@ -119,6 +127,11 @@ static void print_no_getpwnam_test_info() {
GTEST_LOG_(INFO) << "This test is about uid/username translation for Android, which does nothing on libc other than bionic.\n";
}
+static void check_get_passwd(const char* /* username */, uid_t /* uid */, uid_type_t /* uid_type */,
+ bool /* check_username */) {
+ print_no_getpwnam_test_info();
+}
+
static void check_get_passwd(const char* /* username */, uid_t /* uid */, uid_type_t /* uid_type */) {
print_no_getpwnam_test_info();
}
@@ -138,19 +151,19 @@ TEST(pwd, getpwnam_app_id_radio) {
}
TEST(pwd, getpwnam_oem_id_5000) {
- check_get_passwd("oem_5000", 5000, TYPE_SYSTEM);
+ check_get_passwd("oem_5000", 5000, TYPE_SYSTEM, false);
}
TEST(pwd, getpwnam_oem_id_5999) {
- check_get_passwd("oem_5999", 5999, TYPE_SYSTEM);
+ check_get_passwd("oem_5999", 5999, TYPE_SYSTEM, false);
}
TEST(pwd, getpwnam_oem_id_2900) {
- check_get_passwd("oem_2900", 2900, TYPE_SYSTEM);
+ check_get_passwd("oem_2900", 2900, TYPE_SYSTEM, false);
}
TEST(pwd, getpwnam_oem_id_2999) {
- check_get_passwd("oem_2999", 2999, TYPE_SYSTEM);
+ check_get_passwd("oem_2999", 2999, TYPE_SYSTEM, false);
}
TEST(pwd, getpwnam_app_id_nobody) {
@@ -273,34 +286,39 @@ TEST(pwd, getpwent_iterate) {
#endif
}
-static void check_group(const group* grp, const char* group_name, gid_t gid) {
+static void check_group(const group* grp, const char* group_name, gid_t gid,
+ bool check_groupname = true) {
ASSERT_TRUE(grp != NULL);
- EXPECT_STREQ(group_name, grp->gr_name);
+ if (check_groupname) {
+ EXPECT_STREQ(group_name, grp->gr_name);
+ }
EXPECT_EQ(gid, grp->gr_gid);
ASSERT_TRUE(grp->gr_mem != NULL);
- EXPECT_STREQ(group_name, grp->gr_mem[0]);
+ if (check_groupname) {
+ EXPECT_STREQ(group_name, grp->gr_mem[0]);
+ }
EXPECT_TRUE(grp->gr_mem[1] == NULL);
}
#if defined(__BIONIC__)
-static void check_getgrgid(const char* group_name, gid_t gid) {
+static void check_getgrgid(const char* group_name, gid_t gid, bool check_groupname) {
errno = 0;
group* grp = getgrgid(gid);
ASSERT_EQ(0, errno);
SCOPED_TRACE("getgrgid");
- check_group(grp, group_name, gid);
+ check_group(grp, group_name, gid, check_groupname);
}
-static void check_getgrnam(const char* group_name, gid_t gid) {
+static void check_getgrnam(const char* group_name, gid_t gid, bool check_groupname) {
errno = 0;
group* grp = getgrnam(group_name);
ASSERT_EQ(0, errno);
SCOPED_TRACE("getgrnam");
- check_group(grp, group_name, gid);
+ check_group(grp, group_name, gid, check_groupname);
}
-static void check_getgrgid_r(const char* group_name, gid_t gid) {
+static void check_getgrgid_r(const char* group_name, gid_t gid, bool check_groupname) {
group grp_storage;
char buf[512];
group* grp;
@@ -310,10 +328,10 @@ static void check_getgrgid_r(const char* group_name, gid_t gid) {
ASSERT_EQ(0, result);
ASSERT_EQ(0, errno);
SCOPED_TRACE("getgrgid_r");
- check_group(grp, group_name, gid);
+ check_group(grp, group_name, gid, check_groupname);
}
-static void check_getgrnam_r(const char* group_name, gid_t gid) {
+static void check_getgrnam_r(const char* group_name, gid_t gid, bool check_groupname) {
group grp_storage;
char buf[512];
group* grp;
@@ -323,14 +341,14 @@ static void check_getgrnam_r(const char* group_name, gid_t gid) {
ASSERT_EQ(0, result);
ASSERT_EQ(0, errno);
SCOPED_TRACE("getgrnam_r");
- check_group(grp, group_name, gid);
+ check_group(grp, group_name, gid, check_groupname);
}
-static void check_get_group(const char* group_name, gid_t gid) {
- check_getgrgid(group_name, gid);
- check_getgrnam(group_name, gid);
- check_getgrgid_r(group_name, gid);
- check_getgrnam_r(group_name, gid);
+static void check_get_group(const char* group_name, gid_t gid, bool check_groupname = true) {
+ check_getgrgid(group_name, gid, check_groupname);
+ check_getgrnam(group_name, gid, check_groupname);
+ check_getgrgid_r(group_name, gid, check_groupname);
+ check_getgrnam_r(group_name, gid, check_groupname);
}
#else // !defined(__BIONIC__)
@@ -339,6 +357,10 @@ static void print_no_getgrnam_test_info() {
GTEST_LOG_(INFO) << "This test is about gid/group_name translation for Android, which does nothing on libc other than bionic.\n";
}
+static void check_get_group(const char*, gid_t, bool) {
+ print_no_getgrnam_test_info();
+}
+
static void check_get_group(const char*, gid_t) {
print_no_getgrnam_test_info();
}
@@ -358,19 +380,19 @@ TEST(grp, getgrnam_app_id_radio) {
}
TEST(grp, getgrnam_oem_id_5000) {
- check_get_group("oem_5000", 5000);
+ check_get_group("oem_5000", 5000, false);
}
TEST(grp, getgrnam_oem_id_5999) {
- check_get_group("oem_5999", 5999);
+ check_get_group("oem_5999", 5999, false);
}
TEST(grp, getgrnam_oem_id_2900) {
- check_get_group("oem_2900", 2900);
+ check_get_group("oem_2900", 2900, false);
}
TEST(grp, getgrnam_oem_id_2999) {
- check_get_group("oem_2999", 2999);
+ check_get_group("oem_2999", 2999, false);
}
TEST(grp, getgrnam_app_id_nobody) {