Check widget viewer privilege 24/307524/1
authorHwankyu Jhun <h.jhun@samsung.com>
Fri, 8 Mar 2024 05:13:10 +0000 (14:13 +0900)
committerHwankyu Jhun <h.jhun@samsung.com>
Fri, 8 Mar 2024 05:13:10 +0000 (14:13 +0900)
If the port name is "ScreenConnectorInput", amd checks whether the
caller has a privilege related to widget viewer or not.

Change-Id: I15019d879a2633099bebf8aa1ed5995a991e9f15
Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
src/modules/rpc-port/amd_rpc_port.cc

index 0963c6c..813dae0 100644 (file)
@@ -484,12 +484,32 @@ static int VerifyPrivilegeCheckBypass(amd_request_h req) {
   return AMD_CYNARA_RET_UNKNOWN;
 }
 
+static bool CheckScreenConnectorRequest(amd_request_h req) {
+  bundle* kb = amd_request_get_bundle(req);
+  if (kb == nullptr) {
+    _E("Invalid request");
+    return false;
+  }
+
+  tizen_base::Bundle b(kb, false, false);
+  std::string port_name = b.GetString(AUL_K_RPC_PORT);
+  if (port_name == "ScreenConnectorInput")
+    return true;
+
+  return false;
+}
+
 static int CynaraCheckerPrepareStub(amd_cynara_caller_info_h info,
     amd_request_h req, void* data) {
   int ret = VerifyPrivilegeCheckBypass(req);
   if (ret != AMD_CYNARA_RET_UNKNOWN)
     return ret;
 
+  if (CheckScreenConnectorRequest(req)) {
+    return amd_cynara_simple_checker(info, req,
+        const_cast<char*>(PRIVILEGE_WIDGET_VIEWER));
+  }
+
   ret = amd_cynara_simple_checker(info, req,
       const_cast<char*>(PRIVILEGE_APPMANAGER_LAUNCH));
   if (ret <= AMD_CYNARA_RET_DENIED)