From 1250538321122063560f6530a5475ea7ec19ade9 Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Thu, 28 Jul 2016 18:57:05 +0900 Subject: Fix widget plugin parser - Use pkgmgr_installer_info_get_target_uid() instead of getuid() - Requires [slp-pkgmgr] https://review.tizen.org/gerrit/#/c/81631/ Change-Id: I003b0c826c3ccb88aeefa612c9ccb1663dcb05e4 Signed-off-by: Hwankyu Jhun --- packaging/libwidget_service.spec | 1 + parser/CMakeLists.txt | 1 + parser/widget_plugin_parser_db.c | 24 +++++++++++++++++++++--- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/packaging/libwidget_service.spec b/packaging/libwidget_service.spec index 32097b5..61f8f6d 100644 --- a/packaging/libwidget_service.spec +++ b/packaging/libwidget_service.spec @@ -25,6 +25,7 @@ BuildRequires: pkgconfig(libtzplatform-config) BuildRequires: pkgconfig(libxml-2.0) BuildRequires: pkgconfig(aul) BuildRequires: pkgconfig(cynara-client) +BuildRequires: pkgconfig(pkgmgr-installer) %if "%{model_build_feature_widget}" == "0" ExclusiveArch: diff --git a/parser/CMakeLists.txt b/parser/CMakeLists.txt index 95c5697..c4d24d2 100644 --- a/parser/CMakeLists.txt +++ b/parser/CMakeLists.txt @@ -14,6 +14,7 @@ pkg_check_modules(PKGS REQUIRED libxml-2.0 dlog libtzplatform-config + pkgmgr-installer ) FOREACH(FLAGS ${PKGS_CFLAGS}) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FLAGS}") diff --git a/parser/widget_plugin_parser_db.c b/parser/widget_plugin_parser_db.c index 88cc4dc..d3e84ac 100644 --- a/parser/widget_plugin_parser_db.c +++ b/parser/widget_plugin_parser_db.c @@ -24,9 +24,27 @@ #include #include +#include #include "widget_plugin_parser_internal.h" +static int target_uid_initialized; +static uid_t target_uid; + +static uid_t __get_target_uid(void) +{ + int ret; + + if (target_uid_initialized) + return target_uid; + + ret = pkgmgr_installer_info_get_target_uid(&target_uid); + if (ret < 0) + LOGE("Failed to get target uid - %d", ret); + + return target_uid; +} + static int _bind_text(sqlite3_stmt *stmt, int idx, const char *text) { if (text) @@ -38,7 +56,7 @@ static int _bind_text(sqlite3_stmt *stmt, int idx, const char *text) static const char *_get_root_path(const char *pkgid) { const char *path; - uid_t uid = getuid(); + uid_t uid = __get_target_uid(); if (uid == 0) { path = tzplatform_mkpath(TZ_SYS_RO_APP, pkgid); @@ -257,7 +275,7 @@ int widget_parser_db_insert_widget_class(const char *pkgid, GList *widget_list) int ret; sqlite3 *db; - db = _open_db(getuid(), false); + db = _open_db(__get_target_uid(), false); if (db == NULL) return -1; @@ -317,7 +335,7 @@ int widget_parser_db_remove_widget_class(const char *pkgid) int ret; sqlite3 *db; - db = _open_db(getuid(), false); + db = _open_db(__get_target_uid(), false); if (db == NULL) return -1; -- cgit v1.2.3