Api::registerPaths(preq, (lib_retcode)SECURITY_MANAGER_SUCCESS);
}
+RUNNER_TEST(security_manager_59a_path_req_as_root_positive_realpath_check)
+{
+ TemporaryTestUser user("sm_test_59a_user_name", GUM_USERTYPE_NORMAL);
+ user.create();
+
+ AppInstallHelper app("sm_test_59a", user.getUid());
+ ScopedInstaller appInstall(app);
+
+ app.createPrivateDir();
+ PathsRequest preq;
+ preq.setPkgId(app.getPkgId());
+ preq.setUid(user.getUid());
+ std::string privPath = "/opt/.././" + app.getPrivateDir();
+ size_t pos = privPath.find_last_of("/");
+ std::string lastElem = privPath.substr(pos + 1);
+
+ preq.addPath(privPath + "/../" + lastElem, SECURITY_MANAGER_PATH_RW);
+
+ Api::registerPaths(preq, (lib_retcode)SECURITY_MANAGER_SUCCESS);
+}
+
RUNNER_CHILD_TEST(security_manager_60_path_req_as_user_positive)
{
TemporaryTestUser user("sm_test_60_user_name", GUM_USERTYPE_NORMAL, false);
Api::registerPaths(preq, (lib_retcode)SECURITY_MANAGER_SUCCESS);
}
+RUNNER_CHILD_TEST(security_manager_60a_path_req_as_user_positive_realpath_check)
+{
+ TemporaryTestUser user("sm_test_60a_user_name", GUM_USERTYPE_NORMAL);
+ user.create();
+
+ AppInstallHelper app("sm_test_60a", user.getUid());
+ ScopedInstaller appInstall(app);
+
+ RUNNER_ASSERT_ERRNO_MSG(drop_root_privileges(user.getUid(), user.getGid()) == 0,
+ "drop_root_privileges failed");
+
+ app.createPrivateDir();
+ PathsRequest preq;
+ preq.setPkgId(app.getPkgId());
+ preq.setUid(user.getUid());
+ std::string privPath = "/opt/.././" + app.getPrivateDir();
+ size_t pos = privPath.find_last_of("/");
+ std::string lastElem = privPath.substr(pos + 1);
+
+ preq.addPath(privPath + "/../" + lastElem, SECURITY_MANAGER_PATH_RW);
+
+ Api::registerPaths(preq, (lib_retcode)SECURITY_MANAGER_SUCCESS);
+}
+
RUNNER_CHILD_TEST(security_manager_61_path_req_different_user)
{
TemporaryTestUser user1("sm_test_61_1_user_name", GUM_USERTYPE_NORMAL, false);