X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fail_db.c;h=462c54525edb1b7c6e449672e38b17e7cb20469a;hb=4df6f91071ef4ddc2918cbe7679c787b835e8c7a;hp=30fb8e47267d6bbb6f3ebf270c14813ff9a50bf7;hpb=1680aa5a2861a4a5fc0cac35a3cd8827c003797f;p=platform%2Fcore%2Fappfw%2Fail.git diff --git a/src/ail_db.c b/src/ail_db.c index 30fb8e4..462c545 100755 --- a/src/ail_db.c +++ b/src/ail_db.c @@ -146,9 +146,10 @@ char* ail_get_icon_path(uid_t uid) } else { result = tzplatform_mkpath(TZ_SYS_RW_ICONS, "/"); } - int ret; - mkdir(result, S_IRWXU | S_IRGRP | S_IXGRP | S_IXOTH); - if (getuid() == OWNER_ROOT) { + int ret = mkdir(result, S_IRWXU | S_IRGRP | S_IXGRP | S_IXOTH); + if (ret == -1 && errno != EEXIST) { + _E("FAIL : to create directory %s %d", result, errno); + } else if (getuid() == OWNER_ROOT) { ret = chown(result, uid, ((grpinfo)?grpinfo->gr_gid:0)); SET_SMACK_LABEL(result,uid) if (ret == -1) { @@ -160,10 +161,19 @@ char* ail_get_icon_path(uid_t uid) return result; } -static char* ail_get_app_DB(uid_t uid) +char* ail_get_app_DB_journal(uid_t uid) +{ + + char *app_path = ail_get_app_DB(uid); + char* result = NULL; + + asprintf(&result, "%s-journal", app_path); + return result; +} + +char* ail_get_app_DB(uid_t uid) { char *result = NULL; - char *journal = NULL; struct group *grpinfo = NULL; char *dir = NULL; struct passwd *userinfo = getpwuid(uid); @@ -188,10 +198,8 @@ static char* ail_get_app_DB(uid_t uid) return NULL; } asprintf(&result, "%s/.applications/dbspace/.app_info.db", userinfo->pw_dir); - asprintf(&journal, "%s/.applications/dbspace/.app_info.db-journal", userinfo->pw_dir); } else { result = strdup(APP_INFO_DB_FILE); - journal = strdup(APP_INFO_DB_FILE_JOURNAL); } char *temp = strdup(result); dir = strrchr(temp, '/'); @@ -201,10 +209,10 @@ static char* ail_get_app_DB(uid_t uid) return result; } *dir = 0; - if ((uid != GLOBAL_USER)||((uid == GLOBAL_USER)&& (geteuid() == 0 ))) { - int ret; - mkdir(temp, S_IRWXU | S_IRGRP | S_IXGRP | S_IXOTH); - if (getuid() == OWNER_ROOT) { + int ret = mkdir(temp, S_IRWXU | S_IRGRP | S_IXGRP | S_IXOTH); + if (ret == -1 && errno != EEXIST) { + _E("FAIL : to create directory %s %d", temp, errno); + } else if (getuid() == OWNER_ROOT) { ret = chown(temp, uid, ((grpinfo)?grpinfo->gr_gid:0)); SET_SMACK_LABEL(temp,uid) if (ret == -1) { @@ -212,13 +220,12 @@ static char* ail_get_app_DB(uid_t uid) strerror_r(errno, buf, sizeof(buf)); _E("FAIL : chown %s %d.%d, because %s", temp, uid, ((grpinfo)?grpinfo->gr_gid:0), buf); } - } - } + } free(temp); return result; } -char* al_get_desktop_path(uid_t uid) +char* ail_get_desktop_path(uid_t uid) { char *result = NULL; struct group *grpinfo = NULL; @@ -248,17 +255,18 @@ char* al_get_desktop_path(uid_t uid) } else { result = tzplatform_mkpath(TZ_SYS_RW_DESKTOP_APP, "/"); } - if ((uid != GLOBAL_USER)||((uid == GLOBAL_USER)&& (geteuid() == 0 ))) { - int ret; - mkdir(result, S_IRWXU | S_IRGRP | S_IXGRP | S_IXOTH); - ret = chown(result, uid, ((grpinfo)?grpinfo->gr_gid:0)); - SET_SMACK_LABEL(result,uid) - if (ret == -1) { - char buf[BUFSIZE]; - strerror_r(errno, buf, sizeof(buf)); - _E("FAIL : chown %s %d.%d, because %s", result, uid, ((grpinfo)?grpinfo->gr_gid:0), buf); + int ret = mkdir(result, S_IRWXU | S_IRGRP | S_IXGRP | S_IXOTH); + if (ret == -1 && errno != EEXIST) { + _E("FAIL : to create directory %s %d", result, errno); + } else if (getuid() == OWNER_ROOT) { + ret = chown(result, uid, ((grpinfo)?grpinfo->gr_gid:0)); + SET_SMACK_LABEL(result,uid) + if (ret == -1) { + char buf[BUFSIZE]; + strerror_r(errno, buf, sizeof(buf)); + _E("FAIL : chown %s %d.%d, because %s", result, uid, ((grpinfo)?grpinfo->gr_gid:0), buf); + } } - } return result; } @@ -327,16 +335,16 @@ ail_error_e db_open(db_open_mode mode, uid_t uid) char *db = ail_get_app_DB(uid); char *global_db = ail_get_app_DB(GLOBAL_USER); - if (db, F_OK) { + if (access(db, F_OK)) { if (AIL_ERROR_OK == db_util_open_with_options(db, &dbInit, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL)) { for (i = 0; tbls[i] != NULL; i++) { ret = do_db_exec(tbls[i], dbInit); retv_if(ret != AIL_ERROR_OK, AIL_ERROR_DB_FAILED); } - if(AIL_ERROR_OK != ail_db_change_perm(db, uid)) { + if(getuid() == OWNER_ROOT && AIL_ERROR_OK != ail_db_change_perm(db, uid)) { _E("Failed to change permission\n"); - } + } } else { dbInit = NULL; _E("Failed to create table %s\n", db);