diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2018-04-05 18:49:21 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2018-04-05 18:49:21 +0000 |
commit | 45cd095f9d3b2332611eb3bc19907ad4f33950e4 (patch) | |
tree | 4963264932de027a6f0cf415b504685d2dd9d519 | |
parent | 51b867612ecdb99a9b7473a752e452773cb690a0 (diff) | |
parent | 4b30f14b3331eadb96ef5d353c2902de26408566 (diff) | |
download | bionic-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.cpp | 100 |
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) { |