Change to use cynara api instead of checking privilege directly 14/317814/2 accepted/tizen_unified_x_asan accepted/tizen/unified/20250115.005108 accepted/tizen/unified/x/20250115.014941 accepted/tizen/unified/x/asan/20250211.003239
authorsunghyun kim <scholb.kim@samsung.com>
Wed, 8 Jan 2025 08:12:12 +0000 (17:12 +0900)
committersunghyun kim <scholb.kim@samsung.com>
Thu, 9 Jan 2025 01:57:06 +0000 (10:57 +0900)
Change the structure from directly checking privilege by opening a file to checking it using the cynara API

Change-Id: Iff924f7f7aad3a0556437cce69673220f9f38a1e

build/tizen/CMakeLists.txt
packaging/widget-viewer-dali.spec
widget_viewer_dali/internal/widget_view_manager/widget_view_manager_impl.cpp

index 673ca2d86c367c08fe4e4b99a54c29381e45ff96..3956c8d8b3f37b7199551dcebc61c62f36cf579c 100644 (file)
@@ -33,6 +33,7 @@ pkg_check_modules(viewer_dali REQUIRED
        dali2-adaptor
        dali2-toolkit
        cynara-client
+        cynara-creds-self
         ecore-wl2
        ecore-input
        tizen-remote-surface-client
@@ -47,6 +48,7 @@ pkg_check_modules(viewer_dali REQUIRED
         dali2-adaptor
         dali2-toolkit
         cynara-client
+        cynara-creds-self
         ecore-wayland
         ecore-input
         tizen-remote-surface-client
index 2bfa31f6477e4c486af24ef0bc01301b4a07edec..bba8e2a309d97146d9e4663baadfc70417d17240 100644 (file)
@@ -20,6 +20,7 @@ BuildRequires: pkgconfig(dali2-core)
 BuildRequires: pkgconfig(dali2-adaptor)
 BuildRequires: pkgconfig(dali2-toolkit)
 BuildRequires: pkgconfig(cynara-client)
+BuildRequires: pkgconfig(cynara-creds-self)
 BuildRequires: pkgconfig(wayland-tbm-client)
 BuildRequires: pkgconfig(screen_connector_watcher)
 BuildRequires: pkgconfig(watch-holder-base)
index 13c0ef3466c1bef0d08b431abe7265e27f395cfb..c6aabc54acfdaaf76a5b3a71222f48d14c9145f2 100644 (file)
@@ -27,6 +27,7 @@
 #include <dali/integration-api/debug.h>
 #include <system_info.h>
 #include <cynara-client.h>
+#include <cynara-creds-self.h>
 #include <stdio.h>
 #include <fcntl.h>
 #include <unistd.h>
@@ -84,11 +85,9 @@ static bool CheckPrivilege( const char* privilege )
 {
   cynara* cynara;
   int ret = 0;
-  char subjectLabel[ SMACK_LABEL_LENGTH + 1 ] = "";
-  char labelPath[ SMACK_LABEL_LENGTH + 1 ] = "/proc/self/attr/current";
   char uid[10] = { 0, };
   const char* clientSession = "";
-  FILE *fp = NULL;
+  char* cynara_client = nullptr;
 
   ret = cynara_initialize( &cynara, NULL );
   if( ret != CYNARA_API_SUCCESS )
@@ -96,30 +95,24 @@ static bool CheckPrivilege( const char* privilege )
     return false;
   }
 
-  fp = fopen( labelPath , "r" );
-  if(fp != NULL)
+  ret = cynara_creds_self_get_client( CLIENT_METHOD_DEFAULT, &cynara_client);
+  if ( ret != CYNARA_API_SUCCESS)
   {
-    ret = fread( subjectLabel, 1, sizeof(subjectLabel), fp);
-    if ( ret <= 0 )
-    {
-      fclose(fp);
-      cynara_finish( cynara );
-      return false;
-    }
-    fclose(fp);
+    DALI_LOG_ERROR("cynara_creds_self_get_client is failed : %d \n", ret);
+    return false;
   }
-  subjectLabel[ret] = '\0';
-
-  snprintf( uid, 10, "%d", getuid() );
 
-  ret = cynara_check( cynara, subjectLabel, clientSession, uid, privilege );
+  ret = cynara_check( cynara, cynara_client, clientSession, uid, privilege );
   if( ret != CYNARA_API_ACCESS_ALLOWED )
   {
     cynara_finish( cynara );
+    free(cynara_client);
+    DALI_LOG_ERROR("cynara_check is failed : :%d \n", ret);
     return false;
   }
 
   cynara_finish( cynara );
+  free(cynara_client);
 
   return true;
 }