From: Sabera Djelti (sdi2) Date: Fri, 3 Oct 2014 09:03:24 +0000 (+0200) Subject: Add robustness to mkdir X-Git-Tag: accepted/tizen/common/20141103.141400^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;ds=sidebyside;h=2ef4c53272f80076f9682cce9fa5da4eb04f4487;p=platform%2Fcore%2Fappfw%2Fail.git Add robustness to mkdir Change-Id: I457bf87c5d9e19b1e49148f521e3be913531d801 Signed-off-by: Sabera Djelti (sdi2) --- diff --git a/src/ail_db.c b/src/ail_db.c index 1136a71..060d0ca 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) { @@ -208,10 +209,10 @@ 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) { @@ -219,8 +220,7 @@ 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; } @@ -255,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; } @@ -341,7 +342,7 @@ ail_error_e db_open(db_open_mode mode, uid_t uid) 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 {