From 83906164845c0ff2f94f81d056b1a60d81b54274 Mon Sep 17 00:00:00 2001 From: Kyeonghun Lee Date: Thu, 16 Feb 2017 20:17:24 +0900 Subject: [PATCH] [P170213-04010] Copy valid unicode string to main text of thread list Change-Id: I7da91aed47ec282cee01b18d613a1febfc6b1556 Signed-off-by: Kyeonghun Lee --- framework/storage-handler/MsgStorageMessage.cpp | 9 ++++++++- utils/MsgUtilStorage.cpp | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) 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++); -- 2.7.4