diff options
author | Kyeonghun Lee <kh9090.lee@samsung.com> | 2016-11-30 20:52:28 +0900 |
---|---|---|
committer | Kyeonghun Lee <kh9090.lee@samsung.com> | 2016-11-30 20:57:36 +0900 |
commit | 0b9de4156bde7e5f03ada8ffae1afa7594eb6ffe (patch) | |
tree | 95f75ff44febef8826e647aa1aecee3ef799dcda | |
parent | a585cffbc63fdd26222ff234347c8290e90ce9b9 (diff) | |
download | msg-service-0b9de4156bde7e5f03ada8ffae1afa7594eb6ffe.tar.gz msg-service-0b9de4156bde7e5f03ada8ffae1afa7594eb6ffe.tar.bz2 msg-service-0b9de4156bde7e5f03ada8ffae1afa7594eb6ffe.zip |
[TSAM-10625] wrong realloc handle fixed
Change-Id: I5f61102c2744894d081e3d0c033c4d99eee40021
Signed-off-by: Kyeonghun Lee <kh9090.lee@samsung.com>
-rwxr-xr-x | vobject-engine/VCard.c | 50 | ||||
-rwxr-xr-x | vobject-engine/VMessage.c | 41 |
2 files changed, 71 insertions, 20 deletions
diff --git a/vobject-engine/VCard.c b/vobject-engine/VCard.c index 72735e4..15f55df 100755 --- a/vobject-engine/VCard.c +++ b/vobject-engine/VCard.c @@ -1072,6 +1072,7 @@ char* vcard_encode(VTree *pVCardRaw) { VDATA_TRACE_BEGINE char* pVCardRes = NULL; + char* pTempVCard = NULL; VObject * pTmpObj = NULL; char* pTemp = NULL; int len; @@ -1118,13 +1119,15 @@ char* vcard_encode(VTree *pVCardRaw) if ((pTemp = __VCardTypeEncode(pTmpObj, pszCardTypeList[pTmpObj->property])) != NULL) { len = strlen(pTemp); total += len + sizeof(char) * 10; - if ((pVCardRes = (char*)realloc(pVCardRes, total)) == NULL) { + if ((pTempVCard = (char*)realloc(pVCardRes, total)) == NULL) { VDATA_TRACE("vcard_encode():realloc failed\n"); VFREE(pTemp); pTemp = NULL; + VFREE(pVCardRes); VDATA_TRACE_END return NULL; } + pVCardRes = pTempVCard; if (strncmp(pTemp, "VERSION", strlen("VERSION")) != 0) g_strlcat(pVCardRes, pTemp, total - strlen(pVCardRes)); @@ -1142,11 +1145,13 @@ char* vcard_encode(VTree *pVCardRaw) } total += sizeof(char) * 12; - if ((pVCardRes = (char *)realloc(pVCardRes, total)) == NULL) { + if ((pTempVCard = (char *)realloc(pVCardRes, total)) == NULL) { VDATA_TRACE("vcard_encode:realloc failed\n"); + VFREE(pVCardRes); VDATA_TRACE_END return NULL; } + pVCardRes = pTempVCard; g_strlcat(pVCardRes, "END:VCARD\r\n", total - strlen(pVCardRes)); VDATA_TRACE_END return pVCardRes; @@ -1195,6 +1200,7 @@ __VCardTypeEncode(VObject *pTypeObj, char *pType) int len; char* pTemp = NULL; char* szTypeValue = NULL; + char* szTemp = NULL; int i; int enc = 0; char* pEncode = NULL; @@ -1227,21 +1233,27 @@ __VCardTypeEncode(VObject *pTypeObj, char *pType) pTemp = __VCardParamEncode(pTypeObj, &enc); if (pTemp != NULL) { len = strlen(pTemp); - if ((szTypeValue = (char *)realloc(szTypeValue, (total += len))) == NULL) { + if ((szTemp = (char *)realloc(szTypeValue, (total += len))) == NULL) { VDATA_TRACE("__VCardTypeEncode():realloc failed\n"); VFREE(pTemp); - pTemp = NULL - VDATA_TRACE_END; + pTemp = NULL; + VFREE(szTypeValue); + VDATA_TRACE_END return NULL; + } else { + szTypeValue = szTemp; } g_strlcat(szTypeValue, pTemp, total - strlen(szTypeValue)); VFREE(pTemp); pTemp = NULL; } - if ((szTypeValue = (char *)realloc(szTypeValue, (total += 2))) == NULL) { + if ((szTemp = (char *)realloc(szTypeValue, (total += 2))) == NULL) { + VFREE(szTypeValue); VDATA_TRACE_END return NULL; + } else { + szTypeValue = szTemp; } g_strlcat(szTypeValue, ":", total - strlen(szTypeValue)); @@ -1328,21 +1340,27 @@ __VCardTypeEncode(VObject *pTypeObj, char *pType) } } - if ((pRes = (char *)realloc(pRes, strlen(pRes) + 3)) == NULL) { + if ((szTemp = (char *)realloc(pRes, strlen(pRes) + 3)) == NULL) { VFREE(pEncode); VFREE(szTypeValue); + VFREE(pRes); VDATA_TRACE_END return NULL; + } else { + pRes = szTemp; } g_strlcat(pRes, "\r\n", 2); len = strlen(pRes); - if ((szTypeValue = (char *)realloc(szTypeValue, (total += (len+3)))) == NULL) { + if ((szTemp = (char *)realloc(szTypeValue, (total += (len+3)))) == NULL) { VFREE(pEncode); VFREE(pRes); + VFREE(szTypeValue); VDATA_TRACE_END return NULL; + } else { + szTypeValue = szTemp; } g_strlcat(szTypeValue, pRes, total - strlen(szTypeValue)); @@ -1373,6 +1391,7 @@ __VCardParamEncode(VObject* pTypeObj, int* pEnc) int shift = 0; bool bSupported; char* szParam = NULL; + char* szTemp = NULL; VParam* pTemp = NULL; ValueObj* pList = NULL; @@ -1396,9 +1415,12 @@ __VCardParamEncode(VObject* pTypeObj, int* pEnc) bSupported = false; /** Expand szParam string. For appending.*/ - if ((szParam = (char *)realloc(szParam, len += 15)) == NULL) { + if ((szTemp = (char *)realloc(szParam, len += 15)) == NULL) { + VFREE(szParam); VDATA_TRACE_END return NULL; + } else { + szParam = szTemp; } /** appending paramter name. */ @@ -1428,9 +1450,12 @@ __VCardParamEncode(VObject* pTypeObj, int* pEnc) pList = pCharsetList; bSupported = true; break; default: - if ((szParam = (char*)realloc(szParam, 5)) == NULL) { + if ((szTemp = (char*)realloc(szParam, 5)) == NULL) { + VFREE(szParam); VDATA_TRACE_END return NULL; + } else { + szParam = szTemp; } g_strlcat(szParam, "NONE", 5 - strlen(szParam)); } @@ -1441,9 +1466,12 @@ __VCardParamEncode(VObject* pTypeObj, int* pEnc) for (i = 0, sNum = 0x00000001; i < shift; i++) { if (pTemp->paramValue & sNum) { - if ((szParam = (char *)realloc(szParam, (len += (strlen(pList[i].szName) + 2)))) == NULL) { + if ((szTemp = (char *)realloc(szParam, (len += (strlen(pList[i].szName) + 2)))) == NULL) { + VFREE(szParam); VDATA_TRACE_END return NULL; + } else { + szParam = szTemp; } g_strlcat(szParam, pList[i].szName, len - strlen(szParam)); diff --git a/vobject-engine/VMessage.c b/vobject-engine/VMessage.c index 50da899..2e0aeef 100755 --- a/vobject-engine/VMessage.c +++ b/vobject-engine/VMessage.c @@ -1247,6 +1247,7 @@ __VMsgTypeEncode(VObject *pTypeObj, char *pType) int len; char* pTemp = NULL; char* szTypeValue = NULL; + char* szTemp = NULL; int i; int enc = 0; char* pEncode = NULL; @@ -1268,21 +1269,27 @@ __VMsgTypeEncode(VObject *pTypeObj, char *pType) pTemp = __VMsgParamEncode(pTypeObj, &enc); if (pTemp != NULL) { len = strlen(pTemp); - if ((szTypeValue = (char *)realloc(szTypeValue, (total += len))) == NULL) { + if ((szTemp = (char *)realloc(szTypeValue, (total += len))) == NULL) { VDATA_TRACE("__VMsgTypeEncode():realloc failed\n"); VFREE(pTemp); - pTemp = NULL - VDATA_TRACE_END; + pTemp = NULL; + VFREE(szTypeValue); + VDATA_TRACE_END return NULL; + } else { + szTypeValue = szTemp; } g_strlcat(szTypeValue, pTemp, len); VFREE(pTemp); pTemp = NULL; } - if ((szTypeValue = (char *)realloc(szTypeValue, (total += 2))) == NULL) { + if ((szTemp = (char *)realloc(szTypeValue, (total += 2))) == NULL) { + VFREE(szTypeValue); VDATA_TRACE_END return NULL; + } else { + szTypeValue = szTemp; } g_strlcat(szTypeValue, ":", 2); @@ -1369,21 +1376,27 @@ __VMsgTypeEncode(VObject *pTypeObj, char *pType) } } - if ((pRes = (char *)realloc(pRes, strlen(pRes) + 3)) == NULL) { + if ((szTemp = (char *)realloc(pRes, strlen(pRes) + 3)) == NULL) { VFREE(pEncode); VFREE(szTypeValue); + VFREE(pRes); VDATA_TRACE_END return NULL; + } else { + pRes = szTemp; } g_strlcat(pRes, "\r\n", strlen(pRes) + 2); len = strlen(pRes); - if ((szTypeValue = (char *)realloc(szTypeValue, (total += (len+3)))) == NULL) { + if ((szTemp = (char *)realloc(szTypeValue, (total += (len+3)))) == NULL) { VFREE(pEncode); VFREE(pRes); + VFREE(szTypeValue); VDATA_TRACE_END return NULL; + } else { + szTypeValue = szTemp; } g_strlcat(szTypeValue, pRes, total - 1); @@ -1415,6 +1428,7 @@ __VMsgParamEncode(VObject* pTypeObj, int* pEnc) int shift = 0; bool bSupported; char* szParam = NULL; + char* szTemp = NULL; VParam* pTemp = NULL; ValueObj* pList = NULL; @@ -1438,9 +1452,12 @@ __VMsgParamEncode(VObject* pTypeObj, int* pEnc) bSupported = false; /** Expand szParam string. For appending.*/ - if ((szParam = (char *)realloc(szParam, len += 15)) == NULL) { + if ((szTemp = (char *)realloc(szParam, len += 15)) == NULL) { + VFREE(szParam); VDATA_TRACE_END return NULL; + } else { + szParam = szTemp; } /** appending paramter name. */ @@ -1470,9 +1487,12 @@ __VMsgParamEncode(VObject* pTypeObj, int* pEnc) pList = pMsgCharsetList; bSupported = true; break; default: - if ((szParam = (char*)realloc(szParam, 5)) == NULL) { + if ((szTemp = (char*)realloc(szParam, 5)) == NULL) { + VFREE(szParam); VDATA_TRACE_END return NULL; + } else { + szParam = szTemp; } g_strlcat(szParam, "NONE", strlen("NONE")); } @@ -1483,9 +1503,12 @@ __VMsgParamEncode(VObject* pTypeObj, int* pEnc) for (i = 0, sNum = 0x00000001; i < shift; i++) { if (pList[pTemp->paramValue].flag & sNum) { - if ((szParam = (char *)realloc(szParam, (len += (strlen(pList[i].szName) + 2)))) == NULL) { + if ((szTemp = (char *)realloc(szParam, (len += (strlen(pList[i].szName) + 2)))) == NULL) { + VFREE(szParam); VDATA_TRACE_END return NULL; + } else { + szParam = szTemp; } g_strlcat(szParam, pList[i].szName, len); |