From: hhk86.heo Date: Mon, 4 Jan 2016 11:10:12 +0000 (+0900) Subject: Modify mode of data folder in msg-service X-Git-Tag: submit/tizen/20160106.022529^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=dc760aa76457c0e7afca8a463c112e707c18161c;p=platform%2Fcore%2Fmessaging%2Fmsg-service.git Modify mode of data folder in msg-service Fix bug memset 0 issue Change-Id: I87928fe91b28ffe2d39965ab185cb65aab80e08f --- diff --git a/framework/main.cpp b/framework/main.cpp index e3163ad..628d1ce 100755 --- a/framework/main.cpp +++ b/framework/main.cpp @@ -61,6 +61,11 @@ void* InitMsgServer(void*) MsgInitCallStatusManager(); try { + /* ipc data folder set acl for priv_read and priv_write */ + if (!MsgAclInit()) { + MSG_ERR("FAIL TO INITIALIZE ACL [%d]", err); + } + /* storage handler initialize */ err = MsgStoInitDB(false); if (err != MSG_SUCCESS) { diff --git a/include/utils/MsgUtilFile.h b/include/utils/MsgUtilFile.h index ca3f3d6..6b345ee 100755 --- a/include/utils/MsgUtilFile.h +++ b/include/utils/MsgUtilFile.h @@ -65,5 +65,6 @@ int MsgCheckFilepathSmack(const char *app_smack_label, char *file_path); bool MsgScanFile(char *filePath); void MsgGetMimeType(char *filePath, char *mimeType, int size); +bool MsgAclInit(); #endif /* MSG_UTIL_FILE_H */ diff --git a/mapi/msg_storage.cpp b/mapi/msg_storage.cpp index ed679f6..5accc3f 100755 --- a/mapi/msg_storage.cpp +++ b/mapi/msg_storage.cpp @@ -2480,6 +2480,7 @@ int msg_list_condition_set_str(void *condition_info, int field, const char *valu cond->pAddressVal = NULL; } cond->pAddressVal = (char *)new char[size+1]; + memset(cond->pAddressVal, 0x00, sizeof(char)*(size+1)); if (cond->pAddressVal) memcpy(cond->pAddressVal, value, sizeof(char)*size); else @@ -2493,6 +2494,7 @@ int msg_list_condition_set_str(void *condition_info, int field, const char *valu cond->pTextVal = NULL; } cond->pTextVal = (char *)new char[size+1]; + memset(cond->pTextVal, 0x00, sizeof(char)*(size+1)); if (cond->pTextVal) memcpy(cond->pTextVal, value, sizeof(char)*size); else diff --git a/packaging/msg-service.spec b/packaging/msg-service.spec index 5e90165..64838a1 100755 --- a/packaging/msg-service.spec +++ b/packaging/msg-service.spec @@ -18,6 +18,7 @@ Requires(postun): /sbin/ldconfig Requires(post): systemd Requires(postun): systemd BuildRequires: cmake +BuildRequires: libacl-devel BuildRequires: pkgconfig(alarm-service) BuildRequires: pkgconfig(aul) BuildRequires: pkgconfig(badge) @@ -155,18 +156,28 @@ rm %{buildroot}/usr/share/msg-service/msg-service-db.sql %post tools /sbin/ldconfig -chmod 660 /usr/dbspace/.msg_service.db +chmod 640 /usr/dbspace/.msg_service.db chmod 660 /usr/dbspace/.msg_service.db-journal +mkdir -p -m 775 /opt/usr/data/msg-service +mkdir -p -m 770 /opt/usr/data/msg-service/msgdata +mkdir -p -m 770 /opt/usr/data/msg-service/smildata +mkdir -p -m 770 /opt/usr/data/msg-service/ipcdata +mkdir -p -m 770 /opt/usr/data/msg-service/msgdata/thumbnails + + chgrp priv_message_read /usr/dbspace/.msg_service.db -chmod o= /usr/dbspace/.msg_service.db -chsmack -a "*" /usr/dbspace/.msg_service.db +chgrp priv_message_read /opt/usr/data/msg-service/msgdata +chgrp priv_message_read /opt/usr/data/msg-service/smildata +chgrp priv_message_write /opt/usr/data/msg-service/ipcdata +chgrp priv_message_read /opt/usr/data/msg-service/msgdata/thumbnails -mkdir -p -m 775 /opt/usr/data/msg-service -mkdir -p -m 775 /opt/usr/data/msg-service/msgdata -mkdir -p -m 775 /opt/usr/data/msg-service/smildata -mkdir -p -m 775 /opt/usr/data/msg-service/ipcdata -mkdir -p -m 775 /opt/usr/data/msg-service/msgdata/thumbnails + +chsmack -a "*" /usr/dbspace/.msg_service.db +chsmack -a "System::Shared" /opt/usr/data/msg-service/msgdata -t +chsmack -a "System::Shared" /opt/usr/data/msg-service/smildata -t +chsmack -a "System::Run" /opt/usr/data/msg-service/ipcdata -t +chsmack -a "System::Shared" /opt/usr/data/msg-service/msgdata/thumbnails -t %post -n sms-plugin -p /sbin/ldconfig %post -n mms-plugin -p /sbin/ldconfig diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt index 5e6b222..bd3a173 100755 --- a/utils/CMakeLists.txt +++ b/utils/CMakeLists.txt @@ -61,7 +61,7 @@ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS}") SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed") ADD_LIBRARY(${UTILS-LIB} SHARED ${UTILS-SRCS}) -TARGET_LINK_LIBRARIES(${UTILS-LIB} ${utils_pkgs_LDFLAGS} rt ${VOBJECT-LIB}) +TARGET_LINK_LIBRARIES(${UTILS-LIB} ${utils_pkgs_LDFLAGS} rt ${VOBJECT-LIB} acl) INSTALL(TARGETS ${UTILS-LIB} DESTINATION ${LIBDIR} COMPONENT RuntimeLibraries) diff --git a/utils/MsgUtilFile.cpp b/utils/MsgUtilFile.cpp index a502ce5..acd6d85 100755 --- a/utils/MsgUtilFile.cpp +++ b/utils/MsgUtilFile.cpp @@ -26,6 +26,7 @@ #include #include #include +#include #include #include @@ -1257,3 +1258,48 @@ void MsgGetMimeType(char *filePath, char *mimeType, int size) { aul_get_mime_from_file(filePath, mimeType, size); } + + +bool MsgAclInit() +{ + /* ACL */ + /* In msg-service.spec file use libacl-devel. Because acl get not process open API */ + /* So have to set TARGET_LINK_LIBRARIES(acl) in makefile */ + /* After GPL-3.0, not supply shell commend (setfacl, getfacl) by license issue, use the API */ + MSG_BEGIN(); + + const char *priv_read = + "user::rwx\n" + "group::rwx\n" + "group:priv_message_read:rwx\n" + "mask::rwx\n" + "other::---"; + acl_t acl = NULL; + int ret = 0; + + acl = acl_from_text(priv_read); + if (!acl) { + MSG_ERR("%s: `%s': %s\n", MSG_IPC_DATA_PATH, priv_read, strerror(errno)); + return false; + } + + ret = acl_check(acl, NULL); + if (ret != 0) { + acl_free(acl); + if (ret == ACL_DUPLICATE_ERROR) { + MSG_DEBUG("Already Set ACL"); + return true; + } + MSG_ERR("acl_check Fail : [%d],[%s]", ret, acl_error(ret)); + return false; + } + + ret = acl_set_file((const char *)MSG_IPC_DATA_PATH, ACL_TYPE_ACCESS, acl); + if (ret != 0) { + MSG_ERR("acl_set_file Fail : [%d][%s]", ret, strerror(errno)); + } + acl_free(acl); + + MSG_END(); + return true; +}