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
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");
//
// 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)
{