From: Krzysztof Jackiewicz Date: Wed, 26 Feb 2025 10:03:25 +0000 (+0100) Subject: Add app owner getter test X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=eabffed9fc4772608f70cc73dff0567b14de63d7;p=platform%2Fcore%2Ftest%2Fsecurity-tests.git Add app owner getter test Change-Id: Ida7103c7c48f34da5ff6d32e5cb0d1c290456a18 --- diff --git a/src/security-manager-tests/run-security-manager-no-smack-tests.sh b/src/security-manager-tests/run-security-manager-no-smack-tests.sh index df4c682a..99ba4861 100644 --- a/src/security-manager-tests/run-security-manager-no-smack-tests.sh +++ b/src/security-manager-tests/run-security-manager-no-smack-tests.sh @@ -87,7 +87,8 @@ required=( security_manager_25i_local_path_preloaded_install security_manager_25j_global_path_local_install security_manager_26_hybrid_pkg_uninstall_artifacts_check - security_manager_26_1_security_manager_get_app_owner_uid + security_manager_26_1a_security_manager_get_app_owner_uid + security_manager_26_1b_security_manager_get_app_owner_uid security_manager_26_2_security_manager_self_is_app security_manager_26_3_security_manager_is_app_from_pid nss_01_normal_user_without_inter_daemon_groups diff --git a/src/security-manager-tests/test_cases.cpp b/src/security-manager-tests/test_cases.cpp index 04433fb7..732afa34 100644 --- a/src/security-manager-tests/test_cases.cpp +++ b/src/security-manager-tests/test_cases.cpp @@ -1190,11 +1190,11 @@ RUNNER_CHILD_TEST(security_manager_26_hybrid_pkg_uninstall_artifacts_check) app2.checkAfterUninstall(); } -RUNNER_CHILD_TEST(security_manager_26_1_security_manager_get_app_owner_uid) +RUNNER_CHILD_TEST(security_manager_26_1a_security_manager_get_app_owner_uid) { - TemporaryTestUser testUser("sm_test_26_1_user_name", GUM_USERTYPE_NORMAL); + TemporaryTestUser testUser("sm_test_26_1a_user_name", GUM_USERTYPE_NORMAL); testUser.create(); - AppInstallHelperExt app("sm_test_26_1", "sm_test_26_1", testUser.getUid()); + AppInstallHelperExt app("sm_test_26_1a", "sm_test_26_1a", testUser.getUid()); ScopedInstaller appInstall(app); pid_t pid = fork(); RUNNER_ASSERT_ERRNO_MSG(pid >= 0, "Fork failed"); @@ -1219,17 +1219,52 @@ RUNNER_CHILD_TEST(security_manager_26_1_security_manager_get_app_owner_uid) // // This will be changed once we'll do completely black-box security tests that will actually // install a real app. -#ifdef SMACK_ENABLED - RUNNER_ASSERT_MSG(owner_uid == getuid(), "Invalid uid returned - expected: " - << getuid() << " returned: " << owner_uid); -#else - RUNNER_ASSERT_MSG(owner_uid == testUser.getUid(), "Invalid uid returned - expected: " - << testUser.getUid() << " returned: " << owner_uid); -#endif + if (smack_check()) { + RUNNER_ASSERT_MSG(owner_uid == getuid(), "Invalid uid returned - expected: " + << getuid() << " returned: " << owner_uid); + } else { + RUNNER_ASSERT_MSG(owner_uid == testUser.getUid(), "Invalid uid returned - expected: " + << testUser.getUid() << " returned: " << owner_uid); + } exit(0); } } +RUNNER_CHILD_TEST(security_manager_26_1b_security_manager_get_app_owner_uid) +{ + // For non-apps in smack-enabled mode the owner uid is always getuid(). In no-smack mode + // non-apps can't be identified so SECURITY_MANAGER_ERROR_NO_SUCH_OBJECT is returned. + auto test = []{ + uid_t owner_uid = 0; + + int ret = security_manager_get_app_owner_uid(getpid(), &owner_uid); + if (smack_check()) { + RUNNER_ASSERT_MSG(ret == SECURITY_MANAGER_SUCCESS, + "security_manager_get_app_owner_uid() failed "); + RUNNER_ASSERT_MSG(owner_uid == getuid(), + "Invalid uid returned - expected: " << getuid() << " returned: " << + owner_uid); + } else { + RUNNER_ASSERT_MSG(ret == SECURITY_MANAGER_ERROR_NO_SUCH_OBJECT, + "security_manager_get_app_owner_uid() did not fail as expected"); + } + }; + + TemporaryTestUser testUser("sm_test_26_1b_user_name", GUM_USERTYPE_NORMAL); + testUser.create(); + pid_t pid = fork(); + RUNNER_ASSERT_ERRNO_MSG(pid >= 0, "Fork failed"); + if (pid != 0) { + // wait for child to exit + waitPid(pid); + } else { + // child + test(); + RUNNER_ASSERT_MSG(setLauncherSecurityAttributes(testUser) == 0, "launcher failed"); + test(); + exit(0); + } +} RUNNER_CHILD_TEST(security_manager_26_2_security_manager_self_is_app) {