From: Sabera Djelti (sdi2) Date: Tue, 25 Feb 2014 14:17:24 +0000 (+0100) Subject: Remove hardcoded path for multiuser support X-Git-Tag: submit/tizen/20140327.041126~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6dd84c71258d3414e53a37ac791f92e455611050;p=sdk%2Ftarget%2Fsdbd.git Remove hardcoded path for multiuser support Change-Id: I40fbc04ea408f7e044ada515b6c0b17c6ad2ee41 Bug-Tizen: PTREL-725 Signed-off-by: Sabera Djelti (sdi2) --- diff --git a/CMakeLists.txt b/CMakeLists.txt index c112d31..1928023 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,7 +81,7 @@ endif() include(FindPkgConfig) # Get capi-system-info -pkg_check_modules(CAPI_SYSTEM_INFO REQUIRED capi-system-info) +pkg_check_modules(CAPI_SYSTEM_INFO REQUIRED capi-system-info libtzplatform-config) include_directories(${CAPI_SYSTEM_INFO_INCLUDE_DIRS}) # Get pthreads diff --git a/packaging/sdbd.spec b/packaging/sdbd.spec index 2ae0f51..d193ec5 100644 --- a/packaging/sdbd.spec +++ b/packaging/sdbd.spec @@ -12,8 +12,10 @@ Source1003: %{name}.manifest BuildRequires: capi-system-info-devel >= 0.2.0 BuildRequires: cmake >= 2.8.3 +BuildRequires: pkgconfig(libtzplatform-config) Requires: dbus - +Requires: debug-launchpad +Requires(post): /usr/bin/debug_launchpad_preloading_preinitializing_daemon %description Description: SDB daemon. @@ -48,7 +50,7 @@ install -m 755 script/sdk_launch %{buildroot}%{_prefix}/sbin/ %defattr(-,root,root,-) %{_prefix}/sbin/sdbd %{_prefix}/sbin/sdk_launch -%{_sysconfdir}/init.d/sdbd +%attr(0755, root, root) %{_sysconfdir}/init.d/sdbd %{_libdir}/systemd/system/sdbd.service %if 0%{?simulator} %{_libdir}/systemd/system/emulator.target.wants/sdbd.service diff --git a/script/sdk_launch b/script/sdk_launch index 2166781..0c01f1b 100755 --- a/script/sdk_launch +++ b/script/sdk_launch @@ -4,9 +4,10 @@ # Kangho Kim , Yoonki Park # # Description: front hand of app launcher +source /etc/tizen-platform.conf -APP_PATH_PREFIX=/opt/apps -SDK_TOOLS_PATH=/home/developer/sdk_tools +APP_PATH_PREFIX=${TZ_SYS_RW_APP} +SDK_TOOLS_PATH=${TZ_SDK_TOOLS} print_usage() { @@ -115,7 +116,7 @@ then if [ "" != "$attach_id" ] #debug attach then - cmd="$COV_TEST_PREFIX /home/developer/sdk_tools/gdbserver/gdbserver :$port --attach $attach_id" + cmd="$COV_TEST_PREFIX ${TZ_SDK_TOOLS}/gdbserver/gdbserver :$port --attach $attach_id" #debug else if [ "" != "$result_mode" ] @@ -125,7 +126,7 @@ then result_mode="DEBUG" fi cmd="/usr/bin/launch_app $pkgid.$exe __AUL_SDK__ $result_mode __DLP_DEBUG_ARG__ :$port $launch_app_mode" -# cmd="$COV_TEST_PREFIX /home/developer/sdk_tools/gdbserver/gdbserver :$port /opt/apps/$pkgid/bin/$exe" +# cmd="$COV_TEST_PREFIX ${TZ_SDK_TOOLS}/gdbserver/gdbserver :$port ${TZ_SYS_RW_APP}/$pkgid/bin/$exe" fi else if [ "$mode" = "run" ] diff --git a/src/commandline.c b/src/commandline.c index 7b6f7a9..cbc6164 100644 --- a/src/commandline.c +++ b/src/commandline.c @@ -36,6 +36,7 @@ #include "sdb.h" #include "sdb_client.h" #include "file_sync_service.h" +#include static int do_cmd(transport_type ttype, char* serial, char *cmd, ...); @@ -1465,7 +1466,7 @@ int sdb_command2(const char* cmd) { int install_app_sdb(const char *srcpath) { D("Install start\n"); - const char * APP_DEST = "/opt/apps/PKGS/%s"; + const char * APP_DEST = tzplatform_mkpath(TZ_SYS_RW_APP,"PKGS/%s"); const char* filename = sdb_dirstop(srcpath); char destination[PATH_MAX]; diff --git a/src/file_sync_service.c b/src/file_sync_service.c index 1c953cd..64a482d 100644 --- a/src/file_sync_service.c +++ b/src/file_sync_service.c @@ -28,6 +28,7 @@ #include #include "sysdeps.h" #include "smack.h" +#include #define TRACE_TAG TRACE_SYNC #include "sdb.h" @@ -36,6 +37,9 @@ #define SYNC_TIMEOUT 15 +#define APP_INSTALL_PATH_PREFIX1 tzplatform_getenv(TZ_SYS_RW_APP) +#define APP_INSTALL_PATH_PREFIX2 tzplatform_getenv(TZ_USER_APP) + struct sync_permit_rule { const char *name; @@ -56,6 +60,13 @@ struct sync_permit_rule sdk_sync_permit_rule[] = { */ #define DIR_PERMISSION 0777 +void init_sdk_sync_permit_rule_regx(void) +{ + asprintf(&sdk_sync_permit_rule[0].regx, "^((/tmp)|(%s)|(%s))/[a-zA-Z0-9]{10}/data/[a-zA-Z0-9_\\-]{1,50}\\.xml$", APP_INSTALL_PATH_PREFIX1, APP_INSTALL_PATH_PREFIX2); + asprintf(&sdk_sync_permit_rule[1].regx, "^((/tmp)|(%s)|(%s))/[a-zA-Z0-9]{10}/data/+(.)*\\.gcda$", APP_INSTALL_PATH_PREFIX1, APP_INSTALL_PATH_PREFIX2); + asprintf(&sdk_sync_permit_rule[2].regx, "da", "^(/tmp/da/)*+[a-zA-Z0-9_\\-\\.]{1,50}\\.png$"); + +} static void set_syncfile_smack_label(char *src) { char *label_transmuted = NULL; @@ -486,6 +497,7 @@ static int verify_sync_rule(const char* path) { char buf[PATH_MAX]; int i=0; + init_sdk_sync_permit_rule_regx(); for (i=0; sdk_sync_permit_rule[i].regx != NULL; i++) { ret = regcomp(®ex, sdk_sync_permit_rule[i].regx, REG_EXTENDED); if(ret){ @@ -505,6 +517,9 @@ static int verify_sync_rule(const char* path) { } } regfree(®ex); + for (i = 0; i <= 3; i++){ + free(sdk_sync_permit_rule[i].regx); + } return 0; } diff --git a/src/file_sync_service.h b/src/file_sync_service.h index 68059da..61b462a 100644 --- a/src/file_sync_service.h +++ b/src/file_sync_service.h @@ -75,7 +75,7 @@ typedef union { } status; } syncmsg; - +void init_sdk_sync_permit_rule_regx(void); void file_sync_service(int fd, void *cookie); void file_sync_subproc(int fd, void *cookie); int do_sync_ls(const char *path); diff --git a/src/sdb.c b/src/sdb.c index d61cdc0..9029619 100644 --- a/src/sdb.c +++ b/src/sdb.c @@ -27,7 +27,7 @@ #include #include #include - +#include #include "sysdeps.h" #include "sdb.h" @@ -49,7 +49,8 @@ SDB_MUTEX_DEFINE( D_lock ); #endif int HOST = 0; - +#define HOME_DEV_PATH tzplatform_getenv(TZ_SDK_HOME) +#define DEV_NAME tzplatform_getenv(TZ_SDK_USER_NAME) #if !SDB_HOST SdbdCommandlineArgs sdbd_commandline_args; #endif @@ -1110,19 +1111,21 @@ int set_developer_privileges() { return -1; } - if (chdir("/home/developer") < 0) { - D("sdbd: unable to change working directory to /home/developer\n"); + if (chdir(HOME_DEV_PATH) < 0) { + D("sdbd: unable to change working directory to %s\n", HOME_DEV_PATH); } else { if (chdir("/") < 0) { D("sdbd: unable to change working directory to /\n"); } } // TODO: use pam later - putenv("HOME=/home/developer"); + char * env = "HOME="; + strcat(env, HOME_DEV_PATH); + putenv(env); return 1; } -#define ONDEMAND_ROOT_PATH "/home/developer" +#define ONDEMAND_ROOT_PATH tzplatform_getenv(TZ_SDK_HOME) static void execute_required_process() { @@ -1166,7 +1169,7 @@ static void init_sdk_requirements() { } if (st.st_uid != SID_DEVELOPER || st.st_gid != SID_DEVELOPER) { char cmd[128]; - snprintf(cmd, sizeof(cmd), "chown developer:developer %s -R", ONDEMAND_ROOT_PATH); + snprintf(cmd, sizeof(cmd), "chown %s:%s %s -R", DEV_NAME, DEV_NAME, ONDEMAND_ROOT_PATH); if (system(cmd) < 0) { D("failed to change ownership to developer to %s\n", ONDEMAND_ROOT_PATH); } diff --git a/src/sdb.h b/src/sdb.h index 8075d60..ccee503 100644 --- a/src/sdb.h +++ b/src/sdb.h @@ -25,6 +25,7 @@ #if !SDB_HOST #include "commandline_sdbd.h" #endif +#include #define MAX_PAYLOAD 4096 @@ -331,8 +332,8 @@ int rootshell_mode;// 0: developer, 1: root #define SID_ROOT 0 /* traditional unix root user */ #define SID_TTY 5 /* group for /dev/ptmx */ -#define SID_APP 5000 /* application */ -#define SID_DEVELOPER 5100 /* developer with SDK */ +#define SID_APP tzplatform_getuid(TZ_USER_NAME) /* application */ +#define SID_DEVELOPER tzplatform_getuid(TZ_SDK_USER_NAME) /* developer with SDK */ #define SID_APP_LOGGING 6509 #define SID_SYS_LOGGING 6527 #define SID_INPUT 1004 diff --git a/src/sdktools.c b/src/sdktools.c index c288831..e9b3ba6 100644 --- a/src/sdktools.c +++ b/src/sdktools.c @@ -36,6 +36,17 @@ struct arg_permit_rule sdk_arg_permit_rule[] = { /* end */ {NULL, NULL, 0} }; +void init_sdk_arg_permit_rule_pattern(void) +{ + asprintf(&sdk_arg_permit_rule[0].pattern, "^GCOV_PREFIX=((%s)|(%s))/[a-zA-Z0-9]{10}/data$", APP_INSTALL_PATH_PREFIX1, APP_INSTALL_PATH_PREFIX2); + asprintf(&sdk_arg_permit_rule[1].pattern, "GCOV_PREFIX_STRIP=0"); + asprintf(&sdk_arg_permit_rule[2].pattern, "LD_LIBRARY_PATH=%s/gtest/usr/lib:$LD_LIBRARY_PATH", DEV_INSTALL_PATH_PREFIX, APP_INSTALL_PATH_PREFIX2); + asprintf(&sdk_arg_permit_rule[3].pattern, "TIZEN_LAUNCH_MODE=debug"); + asprintf(&sdk_arg_permit_rule[4].pattern, "LD_PRELOAD=/usr/lib/da_probe_osp.so", DEV_INSTALL_PATH_PREFIX, APP_INSTALL_PATH_PREFIX2); + asprintf(&sdk_arg_permit_rule[5].pattern, "^\\-\\-gtest_output=xml:((%s)|(%s))/[a-zA-Z0-9]{10}/data/[a-zA-Z0-9_\\-]{1,30}\\.xml$", APP_INSTALL_PATH_PREFIX1, APP_INSTALL_PATH_PREFIX2); +} + + int verify_commands(const char *arg1) { if (arg1 != NULL) { if (verify_root_commands(arg1)) { @@ -170,6 +181,7 @@ int regcmp(const char* pattern, const char* str) { int env_verify(const char* arg) { int i; + init_sdk_arg_permit_rule_pattern(); for (i=0; sdk_arg_permit_rule[i].name != NULL; i++) { if (sdk_arg_permit_rule[i].expression == 0) { if (!strcmp(sdk_arg_permit_rule[i].pattern, arg)) { @@ -184,6 +196,9 @@ int env_verify(const char* arg) { } } D("failed to set %s\n", arg); + for (i = 0; i <= 6; i++){ + free(sdk_arg_permit_rule[i].pattern); + } return 0; } diff --git a/src/sdktools.h b/src/sdktools.h index 58f1208..de805af 100644 --- a/src/sdktools.h +++ b/src/sdktools.h @@ -4,6 +4,7 @@ #ifdef __cplusplus extern "C" { #endif +#include struct sudo_command { @@ -23,10 +24,11 @@ struct arg_permit_rule }; #define SDK_LAUNCH_PATH "/usr/sbin/sdk_launch" -#define APP_INSTALL_PATH_PREFIX1 "/opt/apps" -#define APP_INSTALL_PATH_PREFIX2 "/opt/usr/apps" -#define GDBSERVER_PATH "/home/developer/sdk_tools/gdbserver/gdbserver" -#define GDBSERVER_PLATFORM_PATH "/home/developer/sdk_tools/gdbserver-platform/gdbserver" +#define APP_INSTALL_PATH_PREFIX1 tzplatform_getenv(TZ_SYS_RW_APP) +#define APP_INSTALL_PATH_PREFIX2 tzplatform_getenv(TZ_USER_APP) +#define DEV_INSTALL_PATH_PREFIX tzplatform_getenv(TZ_SDK_TOOLS) +#define GDBSERVER_PATH tzplatform_mkpath(TZ_SDK_TOOLS,"gdbserver/gdbserver") +#define GDBSERVER_PLATFORM_PATH tzplatform_mkpath(TZ_SDK_TOOLS,"gdbserver-platform/gdbserver") #define SMACK_LEBEL_SUBJECT_PATH "/proc/self/attr/current" #define SMACK_SYNC_FILE_LABEL "*" #define APP_GROUPS_MAX 100 @@ -35,6 +37,7 @@ struct arg_permit_rule #define SDBD_LABEL_NAME "sdbd" #define SDK_HOME_LABEL_NAME "sdbd::home" +void init_sdk_arg_permit_rule_pattern(void); int verify_commands(const char *arg1); int verify_root_commands(const char *arg1); int verify_app_path(const char* path); diff --git a/src/services.c b/src/services.c index 4af9982..b5d8eab 100644 --- a/src/services.c +++ b/src/services.c @@ -40,7 +40,7 @@ #include "strutils.h" #include - +#include typedef struct stinfo stinfo; struct stinfo { @@ -238,7 +238,7 @@ void reboot_service(int fd, void *arg) #if !SDB_HOST #define EVENT_SIZE ( sizeof (struct inotify_event) ) #define BUF_LEN ( 1024 * ( EVENT_SIZE + 16 ) ) -#define CS_PATH "/opt/usr/share/crash/report" +#define CS_PATH tzplatform_mkpath(TZ_USER_SHARE,"crash/report") void inoti_service(int fd, void *arg) {