From 4e12626aea3df681fd0548d9c727625af9ed3b14 Mon Sep 17 00:00:00 2001 From: Young Ik Cho Date: Wed, 7 Aug 2013 17:30:48 +0900 Subject: [PATCH] add appinfo initialization Change-Id: I13fedd4117473422f89b8b5e5f1c9e8d5cc7bfdc Signed-off-by: Young Ik Cho --- CMakeLists.txt | 5 ++- osp-service-app-loader/CMakeLists.txt | 2 - osp-service-app-loader/serviceapp_loader.c | 51 ++++++++++++------------ osp-system-service-loader/CMakeLists.txt | 2 - osp-system-service-loader/systemservice_loader.c | 35 ++++++++++------ osp-ui-app-loader/CMakeLists.txt | 2 - osp-ui-app-loader/uiapp_loader.c | 46 ++++++++++----------- packaging/osp-loader.spec | 6 +-- 8 files changed, 73 insertions(+), 76 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f87f11c..92fa1d5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,18 +1,19 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.6) SET(CMAKE_EXECUTABLE_SUFFIX "") -SET(EXECUTABLE_OUTPUT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/output") INCLUDE(FindPkgConfig) pkg_check_modules(pkgs REQUIRED dlog - aul + appinfo ) FOREACH(flag ${pkgs_CFLAGS}) SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") ENDFOREACH(flag) +SET(EXTRA_C_FLAGS "${EXTRA_CFLAGS} -fvisibility=hidden") + ADD_SUBDIRECTORY(osp-ui-app-loader) ADD_SUBDIRECTORY(osp-service-app-loader) ADD_SUBDIRECTORY(osp-system-service-loader) diff --git a/osp-service-app-loader/CMakeLists.txt b/osp-service-app-loader/CMakeLists.txt index e03c3b5..7618615 100644 --- a/osp-service-app-loader/CMakeLists.txt +++ b/osp-service-app-loader/CMakeLists.txt @@ -7,8 +7,6 @@ SET (${this_target}_SOURCE_FILES ADD_EXECUTABLE (${this_target} ${${this_target}_SOURCE_FILES}) SET(CMAKE_C_FLAGS "${OSP_DEBUG_FLAGS} ${OSP_OPT_FLAGS} ${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} ${OSP_COMPILER_FLAGS} -fPIE") -SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden") -SET(CMAKE_CXX_FLAGS "${OSP_DEBUG_FLAGS} ${OSP_OPT_FLAGS} ${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} ${OSP_COMPILER_FLAGS} -fPIE") TARGET_LINK_LIBRARIES(${this_target} "-Wl,--no-undefined -Wl,--as-needed -pie") TARGET_LINK_LIBRARIES(${this_target} "-ldl") diff --git a/osp-service-app-loader/serviceapp_loader.c b/osp-service-app-loader/serviceapp_loader.c index 0982441..182f5ba 100644 --- a/osp-service-app-loader/serviceapp_loader.c +++ b/osp-service-app-loader/serviceapp_loader.c @@ -29,18 +29,18 @@ #include #include -#include #include +#include #undef LOG_TAG #define LOG_TAG "LOADER" -#define MAX_APPID 20 +#define MAX_PACKAGEID 10 #define MAX_APP_EXECUTABLE_NAME 230 - -#define MIN(a,b) ((a) < (b) ? (a) : (b)) +#define MAX_APPID (MAX_PACKAGEID + MAX_APP_EXECUTABLE_NAME + 1) +#if 0 static void print_args(int argc, char* argv[]) { @@ -52,9 +52,10 @@ print_args(int argc, char* argv[]) LOGI("%dth arg : [%s]", i, p); } } +#endif static void -adjust_privilege() +adjust_privilege(const char* appid) { void* handle = dlopen("libprivilege-control.so.0", RTLD_LAZY | RTLD_LOCAL); if (!handle) @@ -78,17 +79,7 @@ adjust_privilege() return; } - char pkgname[255] = {0, }; - int ret = aul_app_get_appid_bypid(getpid(), pkgname, 255); - if (ret != AUL_R_OK) - { - fprintf(stderr, "Cannot acquire app from pid with 0x%x.\n", ret); - - dlclose(handle); - return; - } - - ret = (*ppriv_func)(pkgname); + int ret = (*ppriv_func)(appid); if (ret < 0) { fprintf(stderr, "set_privilege() returned %d\n", ret); @@ -224,23 +215,27 @@ main(int argc, char* argv[]) { void* real_handle = NULL; char* errormsg = 0; - char appid[MAX_APPID]; + char packageid[MAX_PACKAGEID]; char executable_name[MAX_APP_EXECUTABLE_NAME]; + char appid[MAX_APPID]; void (*pAppInfoInit)(const char*, const char*, int, char* [], int) = NULL; int (*pRealMain)(int, char* []) = NULL; - memset(appid, 0, sizeof(appid)); + memset(packageid, 0, sizeof(packageid)); memset(executable_name, 0, sizeof(executable_name)); + memset(appid, 0, sizeof(appid)); - LOGI("Initializing."); - LOGI("argc %d, argv 0x%x.", argc, argv); - print_args(argc, argv); + LOGI("Initializing : argc %d, argv 0x%x.", argc, argv); + //print_args(argc, argv); - // convert package path to appId - get_packageid_executable_name_from_path(argv[0], appid, executable_name); - LOGI("Osp appId %s.", appid); + // convert package path to package name + get_packageid_executable_name_from_path(argv[0], packageid, executable_name); + snprintf(appid, MAX_APPID, "%s.%s", packageid, executable_name); +#ifdef _SECURE_LOG + LOGI("app is %s", appid); +#endif if (getuid() == 0) { @@ -248,12 +243,16 @@ main(int argc, char* argv[]) osp_do_pre_exe(argv[0]); // adjust privilege - adjust_privilege(); + adjust_privilege(appid); } adjust_capability(); + // initialize appid + appinfo_init(appid, 0); + appinfo_set_argv(argc, argv); + // actual loading char buffer[1024]; @@ -287,7 +286,7 @@ main(int argc, char* argv[]) } // actual initialization - (*pAppInfoInit)(appid, executable_name, argc, argv, -1); + (*pAppInfoInit)(packageid, executable_name, argc, argv, -1); (*pRealMain)(argc, argv); LOGI("Osp application terminates."); diff --git a/osp-system-service-loader/CMakeLists.txt b/osp-system-service-loader/CMakeLists.txt index f6d3499..54d4744 100644 --- a/osp-system-service-loader/CMakeLists.txt +++ b/osp-system-service-loader/CMakeLists.txt @@ -7,8 +7,6 @@ SET (${this_target}_SOURCE_FILES ADD_EXECUTABLE (${this_target} ${${this_target}_SOURCE_FILES}) SET(CMAKE_C_FLAGS "${OSP_DEBUG_FLAGS} ${OSP_OPT_FLAGS} ${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} ${OSP_COMPILER_FLAGS} -fPIE") -SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden") -SET(CMAKE_CXX_FLAGS "${OSP_DEBUG_FLAGS} ${OSP_OPT_FLAGS} ${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} ${OSP_COMPILER_FLAGS} -fPIE") TARGET_LINK_LIBRARIES(${this_target} "-Wl,--no-undefined -Wl,--as-needed -pie") TARGET_LINK_LIBRARIES(${this_target} "-ldl") diff --git a/osp-system-service-loader/systemservice_loader.c b/osp-system-service-loader/systemservice_loader.c index a64099e..7efd568 100644 --- a/osp-system-service-loader/systemservice_loader.c +++ b/osp-system-service-loader/systemservice_loader.c @@ -27,18 +27,18 @@ #include #include -#include #include +#include #undef LOG_TAG #define LOG_TAG "LOADER" -#define MAX_APPID 20 +#define MAX_PACKAGEID 10 #define MAX_APP_EXECUTABLE_NAME 230 - -#define MIN(a,b) ((a) < (b) ? (a) : (b)) +#define MAX_APPID (MAX_PACKAGEID + MAX_APP_EXECUTABLE_NAME + 1) +#if 0 static void print_args(int argc, char* argv[]) { @@ -50,6 +50,7 @@ print_args(int argc, char* argv[]) LOGI("%dth arg : [%s]", i, p); } } +#endif static int osp_do_pre_exe(const char* bin_path) @@ -135,23 +136,27 @@ main(int argc, char* argv[]) { void* real_handle = NULL; char* errormsg = 0; - char appid[MAX_APPID]; + char packageid[MAX_PACKAGEID]; char executable_name[MAX_APP_EXECUTABLE_NAME]; + char appid[MAX_APPID]; void (*pAppInfoInit)(const char*, const char*, int, char* [], int) = NULL; int (*pRealMain)(int, char* []) = NULL; - memset(appid, 0, sizeof(appid)); + memset(packageid, 0, sizeof(packageid)); memset(executable_name, 0, sizeof(executable_name)); + memset(appid, 0, sizeof(appid)); - LOGI("Initializing."); - LOGI("argc %d, argv 0x%x.", argc, argv); - print_args(argc, argv); + LOGI("Initializing : argc %d, argv 0x%x.", argc, argv); + //print_args(argc, argv); - // convert package path to appId - get_packageid_executable_name_from_path(argv[0], appid, executable_name); - LOGI("Osp appId %s.", appid); + // convert package path to packageId + get_packageid_executable_name_from_path(argv[0], packageid, executable_name); + snprintf(appid, MAX_APPID, "%s.%s", packageid, executable_name); +#ifdef _SECURE_LOG + LOGI("app is %s", appid); +#endif if (getuid() == 0) { @@ -162,6 +167,10 @@ main(int argc, char* argv[]) } + // initialize appid + appinfo_init(appid, 0); + appinfo_set_argv(argc, argv); + // actual loading char buffer[1024]; @@ -195,7 +204,7 @@ main(int argc, char* argv[]) } // actual initialization - (*pAppInfoInit)(appid, executable_name, argc, argv, -1); + (*pAppInfoInit)(packageid, executable_name, argc, argv, -1); (*pRealMain)(argc, argv); LOGI("Osp application terminates."); diff --git a/osp-ui-app-loader/CMakeLists.txt b/osp-ui-app-loader/CMakeLists.txt index 11d492d..c111f52 100644 --- a/osp-ui-app-loader/CMakeLists.txt +++ b/osp-ui-app-loader/CMakeLists.txt @@ -7,8 +7,6 @@ SET (${this_target}_SOURCE_FILES ADD_EXECUTABLE (${this_target} ${${this_target}_SOURCE_FILES}) SET(CMAKE_C_FLAGS "${OSP_DEBUG_FLAGS} ${OSP_OPT_FLAGS} ${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} ${OSP_COMPILER_FLAGS} -fPIE") -SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden") -SET(CMAKE_CXX_FLAGS "${OSP_DEBUG_FLAGS} ${OSP_OPT_FLAGS} ${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} ${OSP_COMPILER_FLAGS} -fPIE") TARGET_LINK_LIBRARIES(${this_target} "-Wl,--no-undefined -Wl,--as-needed -pie") TARGET_LINK_LIBRARIES(${this_target} "-ldl") diff --git a/osp-ui-app-loader/uiapp_loader.c b/osp-ui-app-loader/uiapp_loader.c index 5111992..f3feca4 100644 --- a/osp-ui-app-loader/uiapp_loader.c +++ b/osp-ui-app-loader/uiapp_loader.c @@ -29,37 +29,21 @@ #include #include -#include #include +#include #undef LOG_TAG #define LOG_TAG "LOADER" -#define MAX_APPID 20 +#define MAX_PACKAGEID 10 #define MAX_APP_EXECUTABLE_NAME 230 -#define MAX_PACKAGE_NAME 100 - -#define MIN(a,b) ((a) < (b) ? (a) : (b)) +#define MAX_APPID (MAX_PACKAGEID + MAX_APP_EXECUTABLE_NAME + 1) static const char APPFW_SONAME[] = "libosp-appfw.so.1"; -#if 0 -#define SPLASH_WINDOW_PACKAGE_NAME "com.samsung.splash" - -static void -request_splashwindow(char* package_name) -{ - service_h service; - - service_create(&service); - service_set_package(service, SPLASH_WINDOW_PACKAGE_NAME); - service_add_extra_data(service, "package_name", package_name); - service_send_launch_request(service, NULL, NULL); -} -#endif - +#if 0 static void print_args(int argc, char* argv[]) { @@ -71,9 +55,10 @@ print_args(int argc, char* argv[]) LOGD("%dth arg : [%s]", i, p); } } +#endif static void -adjust_privilege(const char* const pkgname) +adjust_privilege(const char* appid) { void* handle = dlopen("libprivilege-control.so.0", RTLD_LAZY | RTLD_LOCAL); if (!handle) @@ -97,7 +82,7 @@ adjust_privilege(const char* const pkgname) return; } - int ret = (*ppriv_func)(pkgname); + int ret = (*ppriv_func)(appid); if (ret < 0) { fprintf(stderr, "set_privilege() returned %d\n", ret); @@ -234,22 +219,27 @@ main(int argc, char* argv[]) { void* handle = NULL; char* errormsg = 0; - char packageid[MAX_APPID]; + char packageid[MAX_PACKAGEID]; char executable_name[MAX_APP_EXECUTABLE_NAME]; - char package_name[MAX_PACKAGE_NAME]; + char appid[MAX_APPID]; void (*pAppInfoInit)(const char*, const char*, int, char* [], int) = NULL; int (*pRealMain)(int, char* []) = NULL; memset(packageid, 0, sizeof(packageid)); memset(executable_name, 0, sizeof(executable_name)); - memset(package_name, 0, sizeof(package_name)); + memset(appid, 0, sizeof(appid)); LOGI("Initializeing : argc %d, argv 0x%x.", argc, argv); //print_args(argc, argv); // convert package path to package name get_packageid_executable_name_from_path(argv[0], packageid, executable_name); + snprintf(appid, MAX_APPID, "%s.%s", packageid, executable_name); + +#ifdef _SECURE_LOG + LOGI("app is %s", appid); +#endif if (getuid() == 0) { @@ -257,12 +247,16 @@ main(int argc, char* argv[]) osp_do_pre_exe(argv[0]); // adjust privilege - adjust_privilege(packageid); + adjust_privilege(appid); } adjust_capability(); + // initialize appid + appinfo_init(appid, 0); + appinfo_set_argv(argc, argv); + // actual loading char buffer[1024]; diff --git a/packaging/osp-loader.spec b/packaging/osp-loader.spec index f3b2cb0..20f2625 100755 --- a/packaging/osp-loader.spec +++ b/packaging/osp-loader.spec @@ -1,13 +1,13 @@ Name: osp-loader Summary: osp application loader -Version: 1.2.2.0 -Release: 2 +Version: 1.2.2.1 +Release: 1 Group: TO_BE/FILLED_IN License: Apache-2.0 Source0: %{name}-%{version}.tar.gz BuildRequires: cmake -BuildRequires: pkgconfig(aul) BuildRequires: pkgconfig(dlog) +BuildRequires: pkgconfig(appinfo) Requires: libprivilege-control # runtime requires -- 2.7.4