int HOST = 0;
#define HOME_DEV_PATH tzplatform_getenv(TZ_SDK_HOME)
#define DEV_NAME tzplatform_getenv(TZ_SDK_USER_NAME)
-uid_t g_sdk_user_id = -1;
-gid_t g_sdk_group_id = -1;
+uid_t g_sdk_user_id;
+gid_t g_sdk_group_id;
char* g_sdk_home_dir = NULL;
char* g_sdk_home_dir_env = NULL;
+int is_init_sdk_userinfo = 0;
#if !SDB_HOST
SdbdCommandlineArgs sdbd_commandline_args;
}
int set_sdk_user_privileges() {
- if (g_sdk_user_id < 0 || g_sdk_group_id < 0 ||
- g_sdk_home_dir == NULL || g_sdk_home_dir_env == NULL) {
+ if (!is_init_sdk_userinfo) {
D("failed to init sdk user information.\n");
return -1;
}
static int init_sdk_userinfo() {
struct passwd pwd;
char *buf = NULL;
- size_t bufsize = 0;
+ long bufsize = 0;
- if (g_sdk_user_id > 0 && g_sdk_group_id > 0 &&
- g_sdk_home_dir != NULL && g_sdk_home_dir_env != NULL) {
+ if (is_init_sdk_userinfo) {
return 0;
}
bufsize = sysconf(_SC_GETPW_R_SIZE_MAX);
- if (bufsize < 0) {
+ if(bufsize < 0) {
bufsize = (16*1024);
}
+
buf = malloc(bufsize);
if (buf == NULL) {
D("failed to allocate passwd buf(%d)\n", bufsize);
}
snprintf(g_sdk_home_dir_env, env_size, "HOME=%s", g_sdk_home_dir);
+ is_init_sdk_userinfo = 1;
return 0;
}