Checking whether required application is installed
authorPiotr Bartosiewicz <p.bartosiewi@partner.samsung.com>
Tue, 8 Oct 2013 14:51:06 +0000 (16:51 +0200)
committerMarcin Niesluchowski <m.niesluchow@samsung.com>
Thu, 23 Jan 2014 14:19:09 +0000 (15:19 +0100)
[Issue#]        SSDWSSP-573
[Bug/Feature]   Poor assertion message when wrt or osp application is
                not installed correctly.
[Cause]         Tested process calls exit so there is printed useless
                message 'Reading pipe error'.
[Solution]      Additional checks are added before api call.
[Verification]  Build, install, run tests.

Change-Id: Ia25efb5d8d5ca6450277d11b84b5345efa92a636

tests/libprivilege-control-tests/common/libprivilege-control_test_common.h
tests/libprivilege-control-tests/libprivilege-control_test_common.cpp
tests/libprivilege-control-tests/test_cases.cpp
tests/libprivilege-control-tests/test_cases_nosmack.cpp

index 446306b..35d2338 100644 (file)
@@ -318,6 +318,9 @@ void cleaning_smack_app_files (void);
 void read_gids(std::set<unsigned> &set, const char *file_path);
 void check_groups(const char *dac_file);
 
+int file_exists(const char *path);
+void check_app_installed(int line_no, const char *app_path);
+
 int nftw_remove_labels(const char *fpath, const struct stat* /*sb*/,
                        int /*typeflag*/, struct FTW* /*ftwbuf*/);
 int nftw_check_labels_app_dir(const char *fpath, const struct stat *sb,
index 9e815f7..fc98daf 100644 (file)
@@ -120,6 +120,22 @@ void check_groups(const char *dac_file)
     RUNNER_ASSERT_MSG(groups_check.empty(), "Application doesn't belong to some required groups: " << groups_left);
 }
 
+int file_exists(const char *path)
+{
+    FILE *file = fopen(path, "r");
+    if (file) {
+        fclose(file);
+        return 0;
+    }
+    return -1;
+}
+
+void check_app_installed(int line_no, const char *app_path)
+{
+    RUNNER_ASSERT_MSG(file_exists(app_path) == 0, "Line: " << line_no <<
+            " App not installed: " << app_path);
+}
+
 int nftw_remove_labels(const char *fpath, const struct stat* /*sb*/,
                        int /*typeflag*/, struct FTW* /*ftwbuf*/)
 {
index 79636b8..bd7032c 100644 (file)
@@ -218,16 +218,6 @@ int check_labels_dir(const char *fpath, const struct stat *sb,
     return 0;
 }
 
-int file_exists(const char *path)
-{
-    FILE *file = fopen(path, "r");
-    if (file) {
-        fclose(file);
-        return 0;
-    }
-    return -1;
-}
-
 void osp_blahblah_check(int line_no, const std::vector<std::string> &rules)
 {
     std::ifstream smack_file(OSP_BLAHBLAH);
@@ -481,6 +471,7 @@ void set_app_privilege(int line_no,
                        const char** privileges, const char* type,
                        const char* app_path, const char* dac_file,
                        const std::vector< std::vector<std::string> > &rules) {
+    check_app_installed(line_no, app_path);
 
     int result = perm_app_uninstall(app_id);
     RUNNER_ASSERT_MSG(result == 0, "Line: " << line_no <<
index 36df1ba..42c587c 100644 (file)
@@ -187,6 +187,39 @@ RUNNER_TEST_NOSMACK(privilege_control04_add_permissions_nosmack)
     RUNNER_ASSERT_MSG(fs.tellg() > 0, "SMACK file empty, but privileges list was not empty.");
 }
 
+void set_app_privilege_nosmack(int line_no,
+                               const char* app_id, app_type_t app_type,
+                               const char** privileges, const char* type,
+                               const char* app_path, const char* dac_file,
+                               const std::vector< std::vector<std::string> > &rules)
+{
+    check_app_installed(line_no, app_path);
+
+    int result;
+
+    result = perm_app_enable_permissions(app_id, app_type, privileges, 1);
+    RUNNER_ASSERT_MSG(result == PC_OPERATION_SUCCESS, "Line: " << line_no <<
+            " Error enabling app permissions. Result: " << result);
+
+    result = test_have_nosmack_accesses(rules);
+    RUNNER_ASSERT_MSG(result == -1, "Line: " << line_no <<
+            " Permissions shouldn't be added. Result: " << result);
+
+    result = perm_app_set_privilege(app_id, type, app_path);
+    RUNNER_ASSERT_MSG(result == PC_OPERATION_SUCCESS, "Line: " << line_no <<
+            " Error in perm_app_set_privilege. Error: " << result);
+
+    //Even though app privileges are set, no smack label should be extracted.
+    char* label = NULL;
+    result = smack_new_label_from_self(&label);
+    RUNNER_ASSERT_MSG(result == -1, "Line: " << line_no <<
+            " new_label_from_self should return error (SMACK is off). Result: " << result);
+    RUNNER_ASSERT_MSG(label == NULL, "Line: " << line_no <<
+            " new_label_from_self shouldn't allocate memory for label.");
+
+    check_groups(dac_file);
+}
+
 /**
  * NOSMACK version of privilege_control05_set_app_privilege test.
  *
@@ -197,6 +230,8 @@ RUNNER_CHILD_TEST_NOSMACK(privilege_control05_set_app_privilege_nosmack)
 {
     int result;
 
+    check_app_installed(__LINE__, APP_SET_PRIV_PATH);
+
     //Preset exec label
     smack_lsetlabel(APP_SET_PRIV_PATH_REAL, APP_ID, SMACK_LABEL_EXEC);
     smack_lsetlabel(APP_SET_PRIV_PATH, APP_ID "_symlink", SMACK_LABEL_EXEC);
@@ -204,7 +239,7 @@ RUNNER_CHILD_TEST_NOSMACK(privilege_control05_set_app_privilege_nosmack)
     //Set app privileges
     result = perm_app_set_privilege(APP_ID, NULL, APP_SET_PRIV_PATH);
     RUNNER_ASSERT_MSG(result == PC_OPERATION_SUCCESS,
-            "Error in perm_app_set_privilege. Result: " << result);
+            "Error in perm_app_set_privilege. Error: " << result);
 
     //Even though app privileges are set, no smack label should be extracted.
     char* label = NULL;
@@ -233,27 +268,8 @@ RUNNER_CHILD_TEST_NOSMACK(privilege_control05_set_app_privilege_nosmack)
  */
 RUNNER_CHILD_TEST_NOSMACK(privilege_control05_set_app_privilege_wgt_nosmack)
 {
-    int result;
-
-    result = perm_app_enable_permissions(WGT_APP_ID, APP_TYPE_WGT, PRIVS_WGT, 1);
-    RUNNER_ASSERT_MSG(result == PC_OPERATION_SUCCESS,
-        " Error enabling app permissions. Result: " << result);
-
-    result = test_have_nosmack_accesses(rules_wgt);
-    RUNNER_ASSERT_MSG(result == -1, "Permissions shouldn't be added. Result: " << result);
-
-    result = perm_app_set_privilege(WGT_APP_ID, "wgt", WGT_APP_PATH);
-    RUNNER_ASSERT_MSG(result == PC_OPERATION_SUCCESS,
-            "Error in perm_app_set_privilege. Result: " << result);
-
-    //Even though app privileges are set, no smack label should be extracted.
-    char* label = NULL;
-    result = smack_new_label_from_self(&label);
-    RUNNER_ASSERT_MSG(result == -1,
-            "new_label_from_self should return error (SMACK is off). Result: " << result);
-    RUNNER_ASSERT_MSG(label == NULL, "new_label_from_self shouldn't allocate memory for label.");
-
-    check_groups(LIBPRIVILEGE_TEST_DAC_FILE_WGT);
+    set_app_privilege_nosmack(__LINE__, WGT_APP_ID, APP_TYPE_WGT, PRIVS_WGT, "wgt", WGT_APP_PATH,
+            LIBPRIVILEGE_TEST_DAC_FILE_WGT, rules_wgt);
 }
 
 /**
@@ -263,27 +279,9 @@ RUNNER_CHILD_TEST_NOSMACK(privilege_control05_set_app_privilege_wgt_nosmack)
  */
 RUNNER_CHILD_TEST_NOSMACK(privilege_control05_set_app_privilege_wgt_partner_nosmack)
 {
-    int result;
-
-    result = perm_app_enable_permissions(WGT_PARTNER_APP_ID, APP_TYPE_WGT_PARTNER, PRIVS_WGT, 1);
-    RUNNER_ASSERT_MSG(result == PC_OPERATION_SUCCESS,
-        " Error enabling app permissions. Result: " << result);
-
-    result = test_have_nosmack_accesses(rules_wgt_partner);
-    RUNNER_ASSERT_MSG(result == -1, "Permissions shouldn't be added. Result: " << result);
-
-    result = perm_app_set_privilege(WGT_PARTNER_APP_ID, "wgt_partner", WGT_PARTNER_APP_PATH);
-    RUNNER_ASSERT_MSG(result == PC_OPERATION_SUCCESS,
-            "Error in perm_app_set_privilege. Result: " << result);
-
-    //Even though app privileges are set, no smack label should be extracted.
-    char* label = NULL;
-    result = smack_new_label_from_self(&label);
-    RUNNER_ASSERT_MSG(result == -1,
-            "new_label_from_self should return error (SMACK is off). Result: " << result);
-    RUNNER_ASSERT_MSG(label == NULL, "new_label_from_self shouldn't allocate memory for label.");
-
-    check_groups(LIBPRIVILEGE_TEST_DAC_FILE_WGT);
+    set_app_privilege_nosmack(__LINE__, WGT_PARTNER_APP_ID, APP_TYPE_WGT_PARTNER, PRIVS_WGT,
+            "wgt_partner", WGT_PARTNER_APP_PATH,
+            LIBPRIVILEGE_TEST_DAC_FILE_WGT, rules_wgt_partner);
 }
 
 /**
@@ -293,27 +291,9 @@ RUNNER_CHILD_TEST_NOSMACK(privilege_control05_set_app_privilege_wgt_partner_nosm
  */
 RUNNER_CHILD_TEST_NOSMACK(privilege_control05_set_app_privilege_wgt_platform_nosmack)
 {
-    int result;
-
-    result = perm_app_enable_permissions(WGT_PLATFORM_APP_ID, APP_TYPE_WGT_PLATFORM, PRIVS_WGT, 1);
-    RUNNER_ASSERT_MSG(result == PC_OPERATION_SUCCESS,
-        " Error enabling app permissions. Result: " << result);
-
-    result = test_have_nosmack_accesses(rules_wgt_platform);
-    RUNNER_ASSERT_MSG(result == -1, "Permissions shouldn't be added. Result: " << result);
-
-    result = perm_app_set_privilege(WGT_PLATFORM_APP_ID, "wgt_platform", WGT_PLATFORM_APP_PATH);
-    RUNNER_ASSERT_MSG(result == PC_OPERATION_SUCCESS,
-            "Error in perm_app_set_privilege. Result: " << result);
-
-    //Even though app privileges are set, no smack label should be extracted.
-    char* label = NULL;
-    result = smack_new_label_from_self(&label);
-    RUNNER_ASSERT_MSG(result == -1,
-            "new_label_from_self should return error (SMACK is off). Result: " << result);
-    RUNNER_ASSERT_MSG(label == NULL, "new_label_from_self shouldn't allocate memory for label.");
-
-    check_groups(LIBPRIVILEGE_TEST_DAC_FILE_WGT);
+    set_app_privilege_nosmack(__LINE__, WGT_PLATFORM_APP_ID, APP_TYPE_WGT_PLATFORM, PRIVS_WGT,
+            "wgt_platform", WGT_PLATFORM_APP_PATH,
+            LIBPRIVILEGE_TEST_DAC_FILE_WGT, rules_wgt_platform);
 }
 
 /**
@@ -323,27 +303,8 @@ RUNNER_CHILD_TEST_NOSMACK(privilege_control05_set_app_privilege_wgt_platform_nos
  */
 RUNNER_CHILD_TEST_NOSMACK(privilege_control05_set_app_privilege_osp_nosmack)
 {
-    int result;
-
-    result = perm_app_enable_permissions(OSP_APP_ID, APP_TYPE_OSP, PRIVS_OSP, 1);
-    RUNNER_ASSERT_MSG(result == PC_OPERATION_SUCCESS,
-        " Error enabling app permissions. Result: " << result);
-
-    result = test_have_nosmack_accesses(rules_osp);
-    RUNNER_ASSERT_MSG(result == -1, "Permissions shouldn't be added. Result: " << result);
-
-    result = perm_app_set_privilege(OSP_APP_ID, NULL, OSP_APP_PATH);
-    RUNNER_ASSERT_MSG(result == PC_OPERATION_SUCCESS,
-            "Error in perm_app_set_privilege. Result: " << result);
-
-    //Even though app privileges are set, no smack label should be extracted.
-    char* label = NULL;
-    result = smack_new_label_from_self(&label);
-    RUNNER_ASSERT_MSG(result == -1,
-            "new_label_from_self should return error (SMACK is off). Result: " << result);
-    RUNNER_ASSERT_MSG(label == NULL, "new_label_from_self shouldn't allocate memory for label.");
-
-    check_groups(LIBPRIVILEGE_TEST_DAC_FILE_OSP);
+    set_app_privilege_nosmack(__LINE__, OSP_APP_ID, APP_TYPE_OSP, PRIVS_OSP, NULL, OSP_APP_PATH,
+            LIBPRIVILEGE_TEST_DAC_FILE_OSP, rules_osp);
 }
 
 /**
@@ -353,27 +314,8 @@ RUNNER_CHILD_TEST_NOSMACK(privilege_control05_set_app_privilege_osp_nosmack)
  */
 RUNNER_CHILD_TEST_NOSMACK(privilege_control05_set_app_privilege_osp_partner_nosmack)
 {
-    int result;
-
-    result = perm_app_enable_permissions(OSP_PARTNER_APP_ID, APP_TYPE_OSP_PARTNER, PRIVS_OSP, 1);
-    RUNNER_ASSERT_MSG(result == PC_OPERATION_SUCCESS,
-        "Error enabling app permissions. Result: " << result);
-
-    result = test_have_nosmack_accesses(rules_osp_partner);
-    RUNNER_ASSERT_MSG(result == -1, "Permissions shouldn't be added.");
-
-    result = perm_app_set_privilege(OSP_PARTNER_APP_ID, NULL, OSP_PARTNER_APP_PATH);
-    RUNNER_ASSERT_MSG(result == PC_OPERATION_SUCCESS,
-            "Error in perm_app_set_privilege. Result: " << result);
-
-    //Even though app privileges are set, no smack label should be extracted.
-    char* label = NULL;
-    result = smack_new_label_from_self(&label);
-    RUNNER_ASSERT_MSG(result == -1,
-            "new_label_from_self should return error (SMACK is off). Result: " << result);
-    RUNNER_ASSERT_MSG(label == NULL, "new_label_from_self shouldn't allocate memory for label.");
-
-    check_groups(LIBPRIVILEGE_TEST_DAC_FILE_OSP);
+    set_app_privilege_nosmack(__LINE__, OSP_PARTNER_APP_ID, APP_TYPE_OSP_PARTNER, PRIVS_OSP,
+            NULL, OSP_PARTNER_APP_PATH, LIBPRIVILEGE_TEST_DAC_FILE_OSP, rules_osp_partner);
 }
 
 /**
@@ -383,27 +325,9 @@ RUNNER_CHILD_TEST_NOSMACK(privilege_control05_set_app_privilege_osp_partner_nosm
  */
 RUNNER_CHILD_TEST_NOSMACK(privilege_control05_set_app_privilege_osp_platform_nosmack)
 {
-    int result;
-
-    result = perm_app_enable_permissions(OSP_PLATFORM_APP_ID, APP_TYPE_OSP_PLATFORM, PRIVS_OSP, 1);
-    RUNNER_ASSERT_MSG(result == PC_OPERATION_SUCCESS,
-        " Error enabling app permissions. Result: " << result);
-
-    result = test_have_nosmack_accesses(rules_osp_platform);
-    RUNNER_ASSERT_MSG(result == -1, "Permissions shouldn't be added. Result: " << result);
-
-    result = perm_app_set_privilege(OSP_PLATFORM_APP_ID, NULL, OSP_PLATFORM_APP_PATH);
-    RUNNER_ASSERT_MSG(result == PC_OPERATION_SUCCESS,
-            "Error in perm_app_set_privilege. Result: " << result);
-
-    //Even though app privileges are set, no smack label should be extracted.
-    char* label = NULL;
-    result = smack_new_label_from_self(&label);
-    RUNNER_ASSERT_MSG(result == -1,
-            "new_label_from_self should return error (SMACK is off). Result: " << result);
-    RUNNER_ASSERT_MSG(label == NULL, "new_label_from_self shouldn't allocate memory for label.");
-
-    check_groups(LIBPRIVILEGE_TEST_DAC_FILE_OSP);
+    set_app_privilege_nosmack(__LINE__, OSP_PLATFORM_APP_ID, APP_TYPE_OSP_PLATFORM, PRIVS_OSP,
+            NULL, OSP_PLATFORM_APP_PATH,
+            LIBPRIVILEGE_TEST_DAC_FILE_OSP, rules_osp_platform);
 }
 
 /*