summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyeonghun Lee <kh9090.lee@samsung.com>2016-11-30 20:52:28 +0900
committerKyeonghun Lee <kh9090.lee@samsung.com>2016-11-30 20:57:36 +0900
commit0b9de4156bde7e5f03ada8ffae1afa7594eb6ffe (patch)
tree95f75ff44febef8826e647aa1aecee3ef799dcda
parenta585cffbc63fdd26222ff234347c8290e90ce9b9 (diff)
downloadmsg-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-xvobject-engine/VCard.c50
-rwxr-xr-xvobject-engine/VMessage.c41
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);