From: Kyeonghun Lee Date: Thu, 16 Feb 2017 11:17:24 +0000 (+0900) Subject: [P170213-04010] Copy valid unicode string to main text of thread list X-Git-Tag: accepted/tizen/3.0/common/20170220.130544~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F36%2F115136%2F3;p=platform%2Fcore%2Fmessaging%2Fmsg-service.git [P170213-04010] Copy valid unicode string to main text of thread list Change-Id: I7da91aed47ec282cee01b18d613a1febfc6b1556 Signed-off-by: Kyeonghun Lee --- diff --git a/framework/storage-handler/MsgStorageMessage.cpp b/framework/storage-handler/MsgStorageMessage.cpp index 53b6647..71ddb2b 100755 --- a/framework/storage-handler/MsgStorageMessage.cpp +++ b/framework/storage-handler/MsgStorageMessage.cpp @@ -2823,8 +2823,15 @@ msg_error_t MsgStoGetThreadInfo(msg_thread_id_t threadId, MSG_THREAD_VIEW_S *pTh memset(pThreadInfo->threadName, 0x00, sizeof(pThreadInfo->threadName)); dbHandle->getColumnToString(index++, MAX_THREAD_NAME_LEN, pThreadInfo->threadName); + char tmpData[MAX_THREAD_DATA_LEN + 1] = {0}; + dbHandle->getColumnToString(index++, MAX_THREAD_DATA_LEN, tmpData); memset(pThreadInfo->threadData, 0x00, sizeof(pThreadInfo->threadData)); - dbHandle->getColumnToString(index++, MAX_THREAD_DATA_LEN, pThreadInfo->threadData); + char *end = NULL; + if (g_utf8_validate(tmpData, -1, (const gchar **)&end) == true) { + g_utf8_strncpy(pThreadInfo->threadData, tmpData, g_utf8_strlen(tmpData, -1)); + } else { + g_utf8_strncpy(pThreadInfo->threadData, tmpData, g_utf8_strlen(tmpData, end - tmpData)); + } pThreadInfo->bProtected = (dbHandle->getColumnToInt(index++) > 0) ? true : false; pThreadInfo->bDraft = dbHandle->getColumnToInt(index++); diff --git a/utils/MsgUtilStorage.cpp b/utils/MsgUtilStorage.cpp index d3be5c7..bef4319 100755 --- a/utils/MsgUtilStorage.cpp +++ b/utils/MsgUtilStorage.cpp @@ -1736,8 +1736,15 @@ msg_error_t MsgStoGetThreadViewList(const MSG_SORT_RULE_S *pSortRule, msg_struct memset(pTmp->threadName, 0x00, sizeof(pTmp->threadName)); dbHandle->getColumnToString(index++, MAX_THREAD_NAME_LEN, pTmp->threadName); + char tmpData[MAX_THREAD_DATA_LEN + 1] = {0}; + dbHandle->getColumnToString(index++, MAX_THREAD_DATA_LEN, tmpData); memset(pTmp->threadData, 0x00, sizeof(pTmp->threadData)); - dbHandle->getColumnToString(index++, MAX_THREAD_DATA_LEN, pTmp->threadData); + char *end = NULL; + if (g_utf8_validate(tmpData, -1, (const gchar **)&end) == true) { + g_utf8_strncpy(pTmp->threadData, tmpData, g_utf8_strlen(tmpData, -1)); + } else { + g_utf8_strncpy(pTmp->threadData, tmpData, g_utf8_strlen(tmpData, end - tmpData)); + } pTmp->bProtected = (dbHandle->getColumnToInt(index++) > 0) ? true : false; pTmp->bDraft = dbHandle->getColumnToInt(index++);