Added no-repeat code for privilege 83/225183/2
authorsungrae jo <seongrae.jo@samsung.com>
Tue, 18 Feb 2020 04:37:05 +0000 (13:37 +0900)
committersungrae jo <seongrae.jo@samsung.com>
Tue, 18 Feb 2020 04:39:04 +0000 (13:39 +0900)
Change-Id: Id53d6203e1c3b25d94b35c19061b25a689675a90
Signed-off-by: sungrae jo <seongrae.jo@samsung.com>
client/vc.c
client/vc_mgr.c
common/vc_command.c
server/vce.c

index 7ee16679f2c2fc3e102b95a2b54ec70562809454..cd57765e166b9d15149c3b66a8a40e991636701c 100644 (file)
@@ -54,6 +54,7 @@ static vc_h g_vc = NULL;
 static int g_daemon_pid = 0;
 
 static int g_feature_enabled = -1;
+static bool g_privilege_allowed = false;
 static bool g_backup = false;
 
 static pthread_mutex_t g_cynara_mutex = PTHREAD_MUTEX_INITIALIZER;
@@ -146,27 +147,33 @@ static void __check_privilege_deinitialize()
 
 static int __vc_check_privilege()
 {
+       if (true == g_privilege_allowed)
+               return VC_ERROR_NONE;
+
        pthread_mutex_lock(&g_cynara_mutex);
 
-       bool ret = true;
-       ret = __check_privilege_initialize();
-       if (false == ret) {
-               SLOG(LOG_ERROR, TAG_VCC, "[ERROR] privilege initialize is failed"); //LCOV_EXCL_LINE
-               pthread_mutex_unlock(&g_cynara_mutex);
-               return VC_ERROR_PERMISSION_DENIED;
-       }
+       if (false == g_privilege_allowed) {
+               bool ret = true;
+               ret = __check_privilege_initialize();
+               if (false == ret) {
+                       SLOG(LOG_ERROR, TAG_VCC, "[ERROR] privilege initialize is failed"); //LCOV_EXCL_LINE
+                       pthread_mutex_unlock(&g_cynara_mutex);
+                       return VC_ERROR_PERMISSION_DENIED;
+               }
 
-       char uid[16];
-       snprintf(uid, 16, "%d", getuid());
-       ret = true;
-       ret = __check_privilege(uid, VC_PRIVILEGE);
-       __check_privilege_deinitialize();
-       if (false == ret) {
-               SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Permission is denied");
-               pthread_mutex_unlock(&g_cynara_mutex);
-               return VC_ERROR_PERMISSION_DENIED;
+               char uid[16];
+               snprintf(uid, 16, "%d", getuid());
+               ret = true;
+               ret = __check_privilege(uid, VC_PRIVILEGE);
+               __check_privilege_deinitialize();
+               if (false == ret) {
+                       SLOG(LOG_ERROR, TAG_VCC, "[ERROR] Permission is denied");
+                       pthread_mutex_unlock(&g_cynara_mutex);
+                       return VC_ERROR_PERMISSION_DENIED;
+               }
        }
 
+       g_privilege_allowed = true;
        pthread_mutex_unlock(&g_cynara_mutex);
        return VC_ERROR_NONE;
 }
index b20079e47cd1a615dba9892fba9a85acbe95ef1b..eb6c3b8b28119c41b5e5004bd0f741e2690220ff 100644 (file)
@@ -211,6 +211,9 @@ static void __check_privilege_deinitialize()
 
 static int __vc_mgr_check_privilege()
 {
+       if (true == g_privilege_allowed)
+               return VC_ERROR_NONE;
+
        pthread_mutex_lock(&g_cynara_mutex);
 
        if (false == g_privilege_allowed) {
index 2446284116d8d8492d421382c1c3ce23586dad29..0d22bc530b372ef24dfea86bc21b5e73c0adb33d 100644 (file)
@@ -34,7 +34,7 @@
 #include "voice_control_key_defines.h"
 
 static int g_feature_enabled = -1;
-static bool g_privilege_allowed = false; 
+static bool g_privilege_allowed = false;
 
 static pthread_mutex_t g_cynara_mutex = PTHREAD_MUTEX_INITIALIZER;
 static cynara *p_cynara = NULL;
@@ -135,6 +135,9 @@ static void __check_privilege_deinitialize()
 
 static int __vc_cmd_check_privilege()
 {
+       if (true == g_privilege_allowed)
+               return VC_ERROR_NONE;
+
        pthread_mutex_lock(&g_cynara_mutex);
 
        if (false == g_privilege_allowed) {
index e9302f3ed6216f42f1ed168d4f13b8bb522c37ea..970f5215312c77fe84d58e9a239956acf7e7bbcc 100644 (file)
@@ -26,6 +26,8 @@
 #include "vce.h"
 
 static int g_feature_enabled = -1;
+static bool g_privilege_allowed = false;
+
 static pthread_mutex_t g_cynara_mutex = PTHREAD_MUTEX_INITIALIZER;
 static cynara *p_cynara = NULL;
 
@@ -111,27 +113,33 @@ static void __check_privilege_deinitialize()
 
 static int __vce_check_privilege()
 {
+       if (true == g_privilege_allowed)
+               return VC_ERROR_NONE;
+
        pthread_mutex_lock(&g_cynara_mutex);
 
-       bool ret = true;
-       ret = __check_privilege_initialize();
-       if (false == ret) {
-               SLOG(LOG_ERROR, TAG_VCD, "[ERROR] privilege initialize is failed");
-               pthread_mutex_unlock(&g_cynara_mutex);
-               return VCE_ERROR_PERMISSION_DENIED;
-       }
+       if (false == g_privilege_allowed) {
+               bool ret = true;
+               ret = __check_privilege_initialize();
+               if (false == ret) {
+                       SLOG(LOG_ERROR, TAG_VCD, "[ERROR] privilege initialize is failed");
+                       pthread_mutex_unlock(&g_cynara_mutex);
+                       return VCE_ERROR_PERMISSION_DENIED;
+               }
 
-       char uid[16];
-       snprintf(uid, 16, "%d", getuid());
-       ret = true;
-       ret = __check_privilege(uid, VC_PRIVILEGE);
-       __check_privilege_deinitialize();
-       if (false == ret) {
-               SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Permission is denied");
-               pthread_mutex_unlock(&g_cynara_mutex);
-               return VCE_ERROR_PERMISSION_DENIED;
+               char uid[16];
+               snprintf(uid, 16, "%d", getuid());
+               ret = true;
+               ret = __check_privilege(uid, VC_PRIVILEGE);
+               __check_privilege_deinitialize();
+               if (false == ret) {
+                       SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Permission is denied");
+                       pthread_mutex_unlock(&g_cynara_mutex);
+                       return VCE_ERROR_PERMISSION_DENIED;
+               }
        }
 
+       g_privilege_allowed = true;
        pthread_mutex_unlock(&g_cynara_mutex);
        return VCE_ERROR_NONE;
 }