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: submit/tizen/20170303.083036~4 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c2d5e724b09a160c78e50d7d3dc2f8a13ddf0c22;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 3198002..1f1dfff 100755 --- a/framework/storage-handler/MsgStorageMessage.cpp +++ b/framework/storage-handler/MsgStorageMessage.cpp @@ -2836,8 +2836,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 111215f..9305c8c 100755 --- a/utils/MsgUtilStorage.cpp +++ b/utils/MsgUtilStorage.cpp @@ -1778,8 +1778,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++);