test : use fork-exec instead of system 44/151644/1 accepted/tizen/4.0/unified/20170922.064704 submit/tizen_4.0/20170921.104954
authorKichan Kwon <k_c.kwon@samsung.com>
Thu, 21 Sep 2017 10:22:55 +0000 (19:22 +0900)
committerKichan Kwon <k_c.kwon@samsung.com>
Thu, 21 Sep 2017 10:23:38 +0000 (19:23 +0900)
- For security issue

Change-Id: I7ff729bf68f7fdc3173d9a5f14ac664b8a0b6943
Signed-off-by: Kichan Kwon <k_c.kwon@samsung.com>
test/runtime_info_test_vconf.c

index 0e7d240..eab55fd 100644 (file)
@@ -288,14 +288,23 @@ static gpointer runtime_info_test_cb_thread(gpointer data)
        return NULL;
 }
 
+#define VCONF_EXECUTABLE       "vconftool"
+#define VCONF_ARGV_0           VCONF_EXECUTABLE
+#define VCONF_ARGV_1           "set"
+#define VCONF_ARGV_2           "-t"
+#define VCONF_ARGV_3           "bool"
+#define VCONF_ARGV_5           "-f"
+#define VCONF_ARGV_6_TRUE      "1"
+#define VCONF_ARGV_6_FALSE     "0"
+#define VCONF_ARGV_7           NULL
+
 void runtime_info_test_set_changed_cb(void)
 {
        int ret;
        bool value = false, value_orig = false;
-       char buf_t[BUF_SIZE];
-       char buf_f[BUF_SIZE];
        int result = ERROR;
        int trial = MAX_TRIAL;
+       pid_t pid = 0;
 
        printf("Runtime_info_set_changed_cb test\n");
 
@@ -316,20 +325,21 @@ void runtime_info_test_set_changed_cb(void)
        g_mutex_init(&mutex);
        g_mutex_lock(&mutex);
 
-       snprintf(buf_t, BUF_SIZE, "vconftool set -t bool %s -f 1",
-                       key_list_bool[CB_TEST_IDX].key_v);
-       snprintf(buf_f, BUF_SIZE, "vconftool set -t bool %s -f 0",
-                       key_list_bool[CB_TEST_IDX].key_v);
-
        for (; trial > 0; trial--) {
-               if (value)
-                       ret = system(buf_f);
-               else
-                       ret = system(buf_t);
-               if (ret == -1) {
-                       printf("vconftool failed.\n");
-                       goto judge;
+               pid = fork();
+               switch (pid) {
+               case 0:
+                       ret = execlp(VCONF_EXECUTABLE, VCONF_ARGV_0, VCONF_ARGV_1, VCONF_ARGV_2,
+                                       VCONF_ARGV_3, key_list_bool[CB_TEST_IDX].key_v, VCONF_ARGV_5,
+                                       (value ? VCONF_ARGV_6_FALSE : VCONF_ARGV_6_TRUE), VCONF_ARGV_7);
+                       if (ret == -1)
+                               printf("vconftool failed.\n");
+                       break;
+               case -1:
+               default:
+                       break;
                }
+
                value = value ? false : true;
 
                if (g_cond_wait_until(&cond, &mutex, g_get_monotonic_time() + TIME_TO_WAIT_CB)) {
@@ -348,10 +358,17 @@ judge:
        printf("  Registering and calling callback : %s\n", PRINT_RESULT(result));
 
        if (value != value_orig) {
-               if (value_orig)
-                       ret = system(buf_t);
-               else
-                       ret = system(buf_f);
+               pid = fork();
+               switch (pid) {
+               case 0:
+                       ret = execlp(VCONF_EXECUTABLE, VCONF_ARGV_0, VCONF_ARGV_1, VCONF_ARGV_2,
+                                       VCONF_ARGV_3, key_list_bool[CB_TEST_IDX].key_v, VCONF_ARGV_5,
+                                       (value_orig ? VCONF_ARGV_6_TRUE : VCONF_ARGV_6_FALSE), VCONF_ARGV_7);
+                       break;
+               case -1:
+               default:
+                       break;
+               }
        }
 
        g_mutex_unlock(&mutex);