Test case for security_manager_drop_process_privileges function. 34/29534/9
authorZbigniew Jasinski <z.jasinski@samsung.com>
Wed, 29 Oct 2014 09:10:26 +0000 (10:10 +0100)
committerZbigniew Jasinski <z.jasinski@samsung.com>
Wed, 5 Nov 2014 11:51:51 +0000 (12:51 +0100)
security_manager_drop_process_privileges implementation:
https://review.tizen.org/gerrit/27848

Change-Id: I17732780dad25f8c3ecdde3e9ad30781a87a6b69

packaging/security-tests.spec
tests/security-manager-tests/CMakeLists.txt
tests/security-manager-tests/security_manager_tests.cpp

index 9434d69314f0121d2c303b8725bb65cf99e1ac41..02b9a7778afe49f07a451ffa51195503e69a71a1 100644 (file)
@@ -8,6 +8,7 @@ URL:        N/A
 Source0:    %{name}-%{version}.tar.gz
 Source1:    %{name}.manifest
 BuildRequires: cmake
+BuildRequires: pkgconfig(libcap)
 BuildRequires: pkgconfig(libsmack)
 BuildRequires: pkgconfig(libprivilege-control)
 BuildRequires: pkgconfig(security-server)
index d8a5b7fa994f917fd430fa9213ca48053806b78d..1f190bb6b8f0db485ed1e57e7bee23f03a2286f1 100644 (file)
@@ -28,7 +28,8 @@ PKG_CHECK_MODULES(SEC_MGR_TESTS_DEP
     cynara-client
     security-manager
     libtzplatform-config
-    sqlite3)
+    sqlite3
+    libcap)
 
 
 SET(TARGET_SEC_MGR_TESTS "security-manager-tests")
index f98c697d801bf6145c46d864cd8ab762bafd40a5..57d0f55a7ee01b62b7dddc4e84268c6454f3f77f 100644 (file)
@@ -5,6 +5,7 @@
 #include <summary_collector.h>
 #include <string>
 #include <unordered_set>
+#include <sys/capability.h>
 
 #include <grp.h>
 #include <pwd.h>
@@ -17,6 +18,7 @@
 #include <cynara_test_client.h>
 
 DEFINE_SMARTPTR(security_manager_app_inst_req_free, app_inst_req, AppInstReqUniquePtr);
+DEFINE_SMARTPTR(cap_free, _cap_struct, CapsSetsUniquePtr);
 
 static const char *const SM_APP_ID1 = "sm_test_app_id_double";
 static const char *const SM_PKG_ID1 = "sm_test_pkg_id_double";
@@ -563,6 +565,28 @@ RUNNER_CHILD_TEST(security_manager_04_app_install_uninstall_by_app_user)
     check_app_permissions(SM_APP_ID3, SM_PKG_ID3, user.c_str(), SM_NO_PRIVILEGES, SM_ALLOWED_PRIVILEGES);
 }
 
+RUNNER_CHILD_TEST(security_manager_05_drop_process_capabilities)
+{
+    int result;
+    CapsSetsUniquePtr caps, caps_empty(cap_init());
+
+    caps.reset(cap_from_text("all=eip"));
+    RUNNER_ASSERT_MSG(caps, "can't convert capabilities from text");
+    result = cap_set_proc(caps.get());
+    RUNNER_ASSERT_MSG(result == 0,
+        "can't set capabilities. Result: " << result);
+
+    result = security_manager_drop_process_privileges();
+    RUNNER_ASSERT_MSG((lib_retcode)result == SECURITY_MANAGER_SUCCESS,
+        "dropping caps failed. Result: " << result);
+
+    caps.reset(cap_get_proc());
+    RUNNER_ASSERT_MSG(caps, "can't get proc capabilities");
+
+    result = cap_compare(caps.get(), caps_empty.get());
+    RUNNER_ASSERT_MSG(result == 0,
+        "capabilities not dropped. Current: " << cap_to_text(caps.get(), NULL));
+}
 
 int main(int argc, char *argv[])
 {