From 12ee908a08bbf4b9a7158b52282d825c5c558622 Mon Sep 17 00:00:00 2001 From: Junghyun Yeon Date: Thu, 12 May 2022 15:22:15 +0900 Subject: [PATCH] Remove TODOs Get UID from sender's PkgRequest and send it into each RequestHandler Change-Id: I751d1c99d04aa74af76ba2f61be434d8991f579d Signed-off-by: Junghyun Yeon --- .../request_handler/abstract_request_handler.cc | 8 +++++++ .../request_handler/abstract_request_handler.hh | 3 +++ .../create_cache_request_handler.cc | 3 +-- src/server/worker_thread.cc | 25 +++++++++++++++++++++- 4 files changed, 36 insertions(+), 3 deletions(-) diff --git a/src/server/request_handler/abstract_request_handler.cc b/src/server/request_handler/abstract_request_handler.cc index bc33e01..379ec33 100644 --- a/src/server/request_handler/abstract_request_handler.cc +++ b/src/server/request_handler/abstract_request_handler.cc @@ -25,5 +25,13 @@ void AbstractRequestHandler::PreExec() { void AbstractRequestHandler::PostExec() { } +void AbstractRequestHandler::SetUID(uid_t uid) { + uid_ = uid; +} + +uid_t AbstractRequestHandler::GetUID() { + return uid_; +} + } // namespace request_handler } // namespace pkgmgr_server diff --git a/src/server/request_handler/abstract_request_handler.hh b/src/server/request_handler/abstract_request_handler.hh index 8b463d4..83da0fc 100644 --- a/src/server/request_handler/abstract_request_handler.hh +++ b/src/server/request_handler/abstract_request_handler.hh @@ -29,12 +29,15 @@ class EXPORT_API AbstractRequestHandler { virtual void PreExec(); virtual void PostExec(); void SetPID(pid_t pid); + void SetUID(uid_t uid); protected: pid_t GetPID(); + uid_t GetUID(); private: pid_t pid_; + uid_t uid_; }; } // namespace request_handler diff --git a/src/server/request_handler/create_cache_request_handler.cc b/src/server/request_handler/create_cache_request_handler.cc index 6cebec6..7193ae6 100644 --- a/src/server/request_handler/create_cache_request_handler.cc +++ b/src/server/request_handler/create_cache_request_handler.cc @@ -72,8 +72,7 @@ CreateCacheRequestHandler::CreateCacheRequestHandler(): scheduler_(gettid()) { bool CreateCacheRequestHandler::HandleRequest(unsigned char* data, int size, const std::string& locale) { - // TODO(ilho159.kim) need to get logined user id - psd::CacheDBHandler db(5001, GetPID()); + psd::CacheDBHandler db(GetUID(), GetPID()); db.SetLocale(locale); int ret = db.Execute(); diff --git a/src/server/worker_thread.cc b/src/server/worker_thread.cc index 0fae011..34a4e6d 100644 --- a/src/server/worker_thread.cc +++ b/src/server/worker_thread.cc @@ -17,8 +17,11 @@ #include "worker_thread.hh" #include +#include #include +#include + #include "abstract_parcelable.hh" #include "request_handler_factory.hh" #include "server/database/db_handle_provider.hh" @@ -35,6 +38,26 @@ #define SQLITE_ENABLE_MEMORY_MANAGEMENT #endif +namespace { + +uid_t globaluser_uid = -1; + +uid_t GetGlobalUID() { + if (globaluser_uid == (uid_t)-1) + globaluser_uid = tzplatform_getuid(TZ_SYS_GLOBALAPP_USER); + + return globaluser_uid; +} + +uid_t ConvertUID(uid_t uid) { + if (uid < REGULAR_USER) + return GetGlobalUID(); + else + return uid; +} + +} // namespace + namespace pkgmgr_server { WorkerThread::WorkerThread(unsigned int num) : stop_all_(false) { @@ -91,7 +114,7 @@ void WorkerThread::Run() { try { handler->PreExec(); - + handler->SetUID(ConvertUID(req->GetSenderUID())); handler->SetPID(req->GetSenderPID()); if (!handler->HandleRequest(req->GetData(), req->GetSize(), locale_.GetObject())) -- 2.7.4