SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
ENDFOREACH(flag)
-pkg_check_modules(pkgs_test REQUIRED dlog glib-2.0 libxml-2.0 bundle pkgmgr-parser pkgmgr-info libtzplatform-config security-manager pkgmgr)
+pkg_check_modules(pkgs_test REQUIRED dlog glib-2.0 libxml-2.0 bundle pkgmgr-parser pkgmgr-info libtzplatform-config security-manager pkgmgr capi-security-privilege-manager)
FOREACH(flag ${pkgs_test_CFLAGS})
SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
ENDFOREACH(flag)
BuildRequires: pkgconfig(db-util)
BuildRequires: pkgconfig(libsmack)
BuildRequires: pkgconfig(pkgmgr)
+BuildRequires: pkgconfig(capi-security-privilege-manager)
BuildRequires: pkgmgr-info-parser-devel
BuildRequires: pkgmgr-info-parser
BuildRequires: fdupes
#include <tzplatform_config.h>
#include <security-manager.h>
+#include <privilege_manager.h>
#include <pkgmgr_parser.h>
#define OWNER_ROOT 0
#define GLOBAL_USER tzplatform_getuid(TZ_SYS_GLOBALAPP_USER)
+static int _convert_privilege_for_compatibility(const char *api_version,
+ GList *in_priv, GList **out_priv)
+{
+ int ret;
+
+ if (g_list_length(in_priv) == 0)
+ return 0;
+
+ ret = privilege_manager_get_mapped_privilege_list(api_version,
+ PRVMGR_PACKAGE_TYPE_CORE, in_priv, out_priv);
+ if (ret != PRVMGR_ERR_NONE) {
+ printf("privilege_manager_get_mapped_privilege_list error: "
+ "%d\n", ret);
+ return -1;
+ }
+
+ return 0;
+}
+
static const char *_get_pkg_root_path(const char *pkgid)
{
const char *path;
app_inst_req *req;
application_x *app = (application_x *)data;
package_x *pkg = (package_x *)user_data;
+ GList *priv = NULL;
req = _prepare_request(pkg->package, app->appid);
if (req == NULL) {
DEFAULT_PRIVILEGE_PLATFORM);
}
- g_list_foreach(pkg->privileges, _insert_privilege_cb, (gpointer)req);
+ if (_convert_privilege_for_compatibility(pkg->api_version,
+ pkg->privileges, &priv)) {
+ printf("convert privilege failed\n");
+ return;
+ }
+
+ g_list_foreach(priv, _insert_privilege_cb, (gpointer)req);
+
+ g_list_free_full(priv, free);
ret = security_manager_app_install(req);
if (ret != SECURITY_MANAGER_SUCCESS)