Coverity fix: check return type
[platform/core/messaging/msg-service.git] / vobject-engine / VCard.c
index 2853176..d0abf97 100755 (executable)
@@ -187,17 +187,17 @@ char* __VCardParamEncode(VObject*, int*);
 
 #ifdef VDATA_GROUPNAME_SUPPORTED
 char*  gszGroupName;
-#endif // VDATA_GROUPNAME_SUPPORTED
+#endif /* VDATA_GROUPNAME_SUPPORTED */
 
 
 /**
  * __VCardGetName() compares the string and vCard type, parameter name.
  *
- * @param      szString        Name which will compare
+ * @param              szString                Name which will compare
  * @param              pszList[]               Name list of vCard type and param
- * @param              size                            Number of total element of list
+ * @param              size                    Number of total element of list
  *
- * @return     index           The index in the list
+ * @return             index                   The index in the list
  */
 int
 __VCardGetName(char* szString, char* pszList[], int size)
@@ -220,11 +220,11 @@ __VCardGetName(char* szString, char* pszList[], int size)
 /**
  * __VCardGetValue() compares the string and vCard type, parameter value.
  *
- * @param      szString        Value which will compare
+ * @param              szString        Value which will compare
  * @param              list[]          Value list of vCard param
- * @param              size                    Number of total element of list
+ * @param              size            Number of total element of list
  *
- * @return     flag      The value's flag.
+ * @return             flag            The value's flag.
  */
 int
 __VCardGetValue(char* szString, const ValueObj list[], int size)
@@ -240,7 +240,7 @@ __VCardGetValue(char* szString, const ValueObj list[], int size)
 
        for (i = 0; i < size-1; i++) {
                VDATA_TRACE(" i : %d", i);
-               VDATA_TRACE(" for loop %d < %d, list[%d] : %p, list[%d].szName : %p", i, size, i, list[i], i, list[i].szName);
+               VDATA_TRACE(" for loop %d < %d, list[%d] : %d, list[%d].szName : %p", i, size, i, list[i].flag, i, list[i].szName);
                VDATA_TRACE(" i : %d", i);
                if (list[i].szName != NULL) {
                        VDATA_TRACE(" list[%d].szName != NULL", i);
@@ -263,10 +263,10 @@ __VCardGetValue(char* szString, const ValueObj list[], int size)
  * __VCardGetTypeName() fine the type name and returns the index number
  *
  * @param              pVCardRaw       The raw data
- * @param              pStatus         Decoder status
+ * @param              pStatus Decoder status
  * @param              pDLen           retrived length
  *
- * @return     res                     The index in type list
+ * @return             res                     The index in type list
  */
 int
 __VCardGetTypeName(char* pVCardRaw, int* pStatus, int* pDLen)
@@ -278,7 +278,7 @@ __VCardGetTypeName(char* pVCardRaw, int* pStatus, int* pDLen)
 
 #ifdef VDATA_GROUPNAME_SUPPORTED
        char*   szGroupName = NULL;
-#endif // VDATA_GROUPNAME_SUPPORTED
+#endif /* VDATA_GROUPNAME_SUPPORTED */
 
        SysRequireEx(pVCardRaw, UNKNOWN_NAME);
 
@@ -367,10 +367,10 @@ __VCardGetTypeName(char* pVCardRaw, int* pStatus, int* pDLen)
  * __VCardGetParamName() fine the param name and returns the index number
  *
  * @param              pVCardRaw       The raw data
- * @param              pStatus         Decoder status
+ * @param              pStatus Decoder status
  * @param              pDLen           retrived length
  *
- * @return     res                     The index in type list
+ * @return             res                     The index in type list
  */
 int
 __VCardGetParamName(char* pVCardRaw, int* pStatus, int* pDLen)
@@ -411,9 +411,9 @@ __VCardGetParamName(char* pVCardRaw, int* pStatus, int* pDLen)
                        TRIM(name);
                        UPPER(name, i, index);
                        res = __VCardGetName(name, (char**)pszCardParamList, VCARD_PARAM_NUM);
-                       if (res == UNKNOWN_NAME) {
+                       if (res == UNKNOWN_NAME)
                                (*pDLen) = 0;
-                       }
+
                        *pStatus = VCARD_PARAM_VALUE_STATUS;
                        break;
                }
@@ -497,9 +497,8 @@ __VCardFreeVTreeMemory(VTree * pTree)
                        pNextObj = pCurObj->pSibling;
                        count = pCurObj->valueCount;
 
-                       for (i = 0; i < count; i++) {
+                       for (i = 0; i < count; i++)
                                VFREE(pCurObj->pszValue[i]);
-                       }
 
 #ifdef VDATA_GROUPNAME_SUPPORTED
                        if (pCurObj->pszGroupName)
@@ -513,8 +512,8 @@ __VCardFreeVTreeMemory(VTree * pTree)
                                while (pCurParam != NULL) {
                                        pNextParam = pCurParam->pNext;
                                        VDATA_TRACE("pNEXT ==> %p", pCurParam->pNext);
-                                       VDATA_TRACE("pPARAM ==> %p", pCurParam->parameter);
-                                       VDATA_TRACE("pVALUE ==> %p", pCurParam->paramValue);
+                                       VDATA_TRACE("pPARAM ==> %d", pCurParam->parameter);
+                                       VDATA_TRACE("pVALUE ==> %d", pCurParam->paramValue);
                                        VDATA_TRACE("pCurParam : %p", pCurParam);
                                        VDATA_TRACE("pCurParam->parameter : %d", pCurParam->parameter);
                                        VDATA_TRACE("pCurParam->paramValue : %d", pCurParam->paramValue);
@@ -545,10 +544,10 @@ __VCardFreeVTreeMemory(VTree * pTree)
  * __VCardGetParamVal() fine the param value and returns value.
  *
  * @param              pVCardRaw       The raw data
- * @param              pStatus         Decoder status
+ * @param              pStatus Decoder status
  * @param              pDLen           retrived length
  *
- * @return     buffer          The result value
+ * @return             buffer          The result value
  */
 char*
 __VCardGetParamVal(char* pVCardRaw, int* pStatus, int* pDLen)
@@ -565,15 +564,15 @@ __VCardGetParamVal(char* pVCardRaw, int* pStatus, int* pDLen)
                GO_NEXT_CHAR(c, pVCardRaw, pDLen);
                len++;
                switch (c) {
-                       case VTYPE_TOKEN_SEMICOLON:
-                               *pStatus = VCARD_PARAM_NAME_STATUS;
-                               break;
-                       case VTYPE_TOKEN_COLON:
-                               *pStatus = VCARD_TYPE_VALUE_STATUS;
-                               break;
-                       case VTYPE_TOKEN_COMMA:
-                               *pStatus = VCARD_PARAM_VALUE_STATUS;
-                               break;
+               case VTYPE_TOKEN_SEMICOLON:
+                       *pStatus = VCARD_PARAM_NAME_STATUS;
+                       break;
+               case VTYPE_TOKEN_COLON:
+                       *pStatus = VCARD_TYPE_VALUE_STATUS;
+                       break;
+               case VTYPE_TOKEN_COMMA:
+                       *pStatus = VCARD_PARAM_VALUE_STATUS;
+                       break;
                }
                if (c == VTYPE_TOKEN_SEMICOLON
                                || c == VTYPE_TOKEN_COLON
@@ -601,9 +600,9 @@ __VCardGetParamVal(char* pVCardRaw, int* pStatus, int* pDLen)
 /**
  * __VCardGetTypeVal() fine the type value and returns value.
  *
- * @param      pVCardRaw       The raw data
+ * @param              pVCardRaw               The raw data
  * @param              status                  Decoder status
- * @return     buffer          The result value
+ * @return             buffer                  The result value
  */
 char*
 __VCardGetTypeVal(char* pVCardRaw, int* pStatus, int* pDLen, int enc, VObject* pType)
@@ -704,7 +703,7 @@ __VCardGetTypeVal(char* pVCardRaw, int* pStatus, int* pDLen, int enc, VObject* p
                                        len++;
                                }
                        } else if (__VCardGetTypeName(pVCardRaw, &Status, &Len) != UNKNOWN_NAME) {
-                               --len;
+                               --len;
                                if ((pBuf = (char *)calloc(1, len)) == NULL) return NULL;
 
                                memset(pBuf, 0x00, len);
@@ -835,7 +834,7 @@ VTree* vcard_decode(char *pCardRaw)
        int param_status = false;
        int numberedParam = 0;
        int enc = 0;
-       //int start_status = 0;
+       /* int start_status = 0; */
        char* temp = NULL;
 
        bool vcard_ended = false;
@@ -845,9 +844,9 @@ VTree* vcard_decode(char *pCardRaw)
        VDATA_TRACE("length of pCardRaw = %d", len);
 
        pCardRaw = _VUnfoldingNoSpecNew(pCardRaw);
-       if (pCardRaw == NULL) {
+       if (pCardRaw == NULL)
                return NULL;
-       }
+
        pCardRawTmp = pCardRaw;
        len = _VManySpace2Space(pCardRaw);
 
@@ -867,188 +866,190 @@ VTree* vcard_decode(char *pCardRaw)
                        break;
 
                switch (status) {
-                       case VCARD_TYPE_NAME_STATUS:
+               case VCARD_TYPE_NAME_STATUS:
+                       dLen = 0;
+                       type = __VCardGetTypeName(pCardRaw, &status, &dLen);
+                       pCardRaw += dLen;
+
+                       if (type == -1)
+                               break;
+
+                       switch (type) {
+                       case VCARD_TYPE_BEGIN:
+                               if (pVCard) {
+                                       free(pVCard);
+                                       pVCard = NULL;
+                               }
+
+                               if ((pVCard = (VTree*)calloc(1,  sizeof(VTree))) == NULL) {
+                                       /* start_status = 1; */
+                                       goto CATCH;
+                               }
+
+                               memset(pVCard, 0x00, sizeof(VTree));
+
                                dLen = 0;
-                               type = __VCardGetTypeName(pCardRaw, &status, &dLen);
+                               szCardBegin = __VCardGetTypeVal(pCardRaw, &status, &dLen, enc, NULL);
                                pCardRaw += dLen;
+                               VFREE(szCardBegin);
+
+                               pVCard->treeType = VCARD;
+                               pVCard->pTop = NULL;
+                               pVCard->pCur = NULL;
+                               pVCard->pNext = NULL;
+                               break;
+
+                       case VCARD_TYPE_END:
+                               enc = 0;
+                               if (strstr(pCardRaw, "VCARD") != NULL) {
+                                       pCardRaw += dLen;
+                                       done = true;
+                                       vcard_ended = true;
+                               } else  {
+                                       status = VCARD_TYPE_NAME_STATUS;
+                                       pCardRaw += dLen;
+                                       /*VFREE(etemp); */
+                               }
+                               break;
+
+                       case UNKNOWN_NAME:
+                               break;
 
-                               if (type == -1)
+                       default:
+                               if (UNKNOWN_NAME == type || type < 0) {
+                                       status = VCARD_TYPE_NAME_STATUS;
                                        break;
+                               }
+
+                               if ((pTemp = (VObject*)calloc(1,  sizeof(VObject))) == NULL)
+                                       goto CATCH;
+
+                               memset(pTemp, 0, sizeof(VObject));
+                               pTemp->property = type;
 
-                               switch (type) {
-                                       case VCARD_TYPE_BEGIN:
-                                               if (pVCard) {
-                                                       free(pVCard);
-                                                       pVCard = NULL;
-                                               }
-
-                                               if ((pVCard = (VTree*)calloc(1,  sizeof(VTree))) == NULL) {
-                                                       //start_status = 1;
-                                                       goto CATCH;
-                                               }
-
-                                               memset(pVCard, 0x00, sizeof(VTree));
-
-                                               dLen = 0;
-                                               szCardBegin = __VCardGetTypeVal(pCardRaw, &status, &dLen, enc, NULL);
-                                               pCardRaw += dLen;
-                                               VFREE(szCardBegin);
-
-                                               pVCard->treeType = VCARD;
-                                               pVCard->pTop = NULL;
-                                               pVCard->pCur = NULL;
-                                               pVCard->pNext = NULL;
-                                               break;
-
-                                       case VCARD_TYPE_END:
-                                               enc = 0;
-                                               if (strstr(pCardRaw, "VCARD") != NULL) {
-                                                       pCardRaw += dLen;
-                                                       done = true;
-                                                       vcard_ended = true;
-                                               } else  {
-                                                       status = VCARD_TYPE_NAME_STATUS;
-                                                       pCardRaw += dLen;
-                                                       /*VFREE(etemp); */
-                                               }
-                                               break;
-
-                                       case UNKNOWN_NAME:
-                                               break;
-
-                                       default:
-                                               if (UNKNOWN_NAME == type || type < 0) {
-                                                       status = VCARD_TYPE_NAME_STATUS;
-                                                       break;
-                                               }
-
-                                               if ((pTemp = (VObject*)calloc(1,  sizeof(VObject))) == NULL) {
-                                                       goto CATCH;
-                                               }
-
-                                               memset(pTemp, 0, sizeof(VObject));
-                                               pTemp->property = type;
-
-                                               if (pVCard->pTop == NULL) {
-                                                       pVCard->pTop = pTemp;
-                                                       pVCard->pCur = pTemp;
-                                               } else {
-                                                       pVCard->pCur->pSibling = pTemp;
-                                                       pVCard->pCur = pTemp;
-                                               }
-
-                                               break;
+                               if (pVCard == NULL)
+                                       goto CATCH;
+
+                               if (pVCard->pTop == NULL) {
+                                       pVCard->pTop = pTemp;
+                                       pVCard->pCur = pTemp;
+                               } else {
+                                       pVCard->pCur->pSibling = pTemp;
+                                       pVCard->pCur = pTemp;
                                }
 
-                               numberedParam = 0;
-                               param_status = false;
-                               valueCount = 0;
+                               break;
+                       }
+
+                       numberedParam = 0;
+                       param_status = false;
+                       valueCount = 0;
 
 #ifdef VDATA_GROUPNAME_SUPPORTED
-                               if (gszGroupName != NULL)
-                                       pVCard->pCur->pszGroupName = gszGroupName;
+                       if (gszGroupName != NULL)
+                               pVCard->pCur->pszGroupName = gszGroupName;
 #endif
-                               break;
+                       break;
 
-                       case VCARD_PARAM_NAME_STATUS:
-                       {
-                               dLen = 0;
-                               param = __VCardGetParamName(pCardRaw, &status, &dLen);
-                               pCardRaw += dLen;
+               case VCARD_PARAM_NAME_STATUS:
+               {
+                       dLen = 0;
+                       param = __VCardGetParamName(pCardRaw, &status, &dLen);
+                       pCardRaw += dLen;
 
-                               if (param_status != true) {
+                       if (param_status != true) {
 
-                                       if ((pTmpParam = (VParam*)calloc(1,  sizeof(VParam))) == NULL)
-                                                       goto CATCH;
+                               if ((pTmpParam = (VParam*)calloc(1,  sizeof(VParam))) == NULL)
+                                               goto CATCH;
 
-                                       param_status = true;
-                                       pVCard->pCur->pParam = pTmpParam;
-                                       memset(pTmpParam, 0x00, sizeof(VParam));
-                                       VDATA_TRACE("pTmpParam : %p", pTmpParam);
-                               } else {
-                                       if ((pTmpParam->pNext = (VParam*)calloc(1,  sizeof(VParam))) == NULL)
-                                                       goto CATCH;
+                               param_status = true;
+                               pVCard->pCur->pParam = pTmpParam;
+                               memset(pTmpParam, 0x00, sizeof(VParam));
+                               VDATA_TRACE("pTmpParam : %p", pTmpParam);
+                       } else {
+                               if ((pTmpParam->pNext = (VParam*)calloc(1,  sizeof(VParam))) == NULL)
+                                       goto CATCH;
 
-                                       pTmpParam = pTmpParam->pNext;
-                                       memset(pTmpParam, 0x00, sizeof(VParam));
-                                       VDATA_TRACE("pTmpParam : %p", pTmpParam);
-                               }
+                               pTmpParam = pTmpParam->pNext;
+                               memset(pTmpParam, 0x00, sizeof(VParam));
+                               VDATA_TRACE("pTmpParam : %p", pTmpParam);
+                       }
 
-                               pTmpParam->parameter = param;
+                       pTmpParam->parameter = param;
+                       break;
+               }
+               case VCARD_PARAM_VALUE_STATUS:
+                       dLen = 0;
+                       numberedParam = 0;
+                       switch (pTmpParam->parameter) {
+                       case VCARD_PARAM_TYPE:
+                               szValue = __VCardGetParamVal(pCardRaw, &status, &dLen);
+                               numberedParam |= __VCardGetValue(szValue, pTypeList, VCARD_TYPE_PARAM_NUM);
                                break;
-                       }
-                       case VCARD_PARAM_VALUE_STATUS:
-                               dLen = 0;
+                       case VCARD_PARAM_VALUE:
+                               szValue = __VCardGetParamVal(pCardRaw, &status, &dLen);
+                               numberedParam |= __VCardGetValue(szValue, pValueList, VCARD_VALUE_PARAM_NUM);
+                               break;
+                       case VCARD_PARAM_ENCODING:
+                               szValue = __VCardGetParamVal(pCardRaw, &status, &dLen);
+                               numberedParam |= __VCardGetValue(szValue, pEncList, VCARD_ENCODE_PARAM_NUM);
+                               enc = numberedParam;
+                               break;
+                       case VCARD_PARAM_CHARSET:
+                               szValue = __VCardGetParamVal(pCardRaw, &status, &dLen);
+                               numberedParam |= __VCardGetValue(szValue, pCharsetList, VCARD_CHARSET_PARAM_NUM);
+                               break;
+                       case VCARD_PARAM_CONTEXT:
+                       case VCARD_PARAM_LANGUAGE:
+                               /* prevent 7605 08.03.13 */
+                               szValue = __VCardGetParamVal(pCardRaw, &status, &dLen);
                                numberedParam = 0;
-                               switch (pTmpParam->parameter) {
-                                       case VCARD_PARAM_TYPE:
-                                               szValue = __VCardGetParamVal(pCardRaw, &status, &dLen);
-                                               numberedParam |= __VCardGetValue(szValue, pTypeList, VCARD_TYPE_PARAM_NUM);
-                                               break;
-                                       case VCARD_PARAM_VALUE:
-                                               szValue = __VCardGetParamVal(pCardRaw, &status, &dLen);
-                                               numberedParam |= __VCardGetValue(szValue, pValueList, VCARD_VALUE_PARAM_NUM);
-                                               break;
-                                       case VCARD_PARAM_ENCODING:
-                                               szValue = __VCardGetParamVal(pCardRaw, &status, &dLen);
-                                               numberedParam |= __VCardGetValue(szValue, pEncList, VCARD_ENCODE_PARAM_NUM);
-                                               enc = numberedParam;
-                                               break;
-                                       case VCARD_PARAM_CHARSET:
-                                               szValue = __VCardGetParamVal(pCardRaw, &status, &dLen);
-                                               numberedParam |= __VCardGetValue(szValue, pCharsetList, VCARD_CHARSET_PARAM_NUM);
-                                               break;
-                                       case VCARD_PARAM_CONTEXT:
-                                       case VCARD_PARAM_LANGUAGE:
-                                               // prevent 7605 08.03.13
-                                               szValue = __VCardGetParamVal(pCardRaw, &status, &dLen);
-                                               numberedParam = 0;
-                                               break;
-                                       default:
-                                               szValue = __VCardGetParamVal(pCardRaw, &status, &dLen);
-
-                                               SET_PARAM_VALUE(numberedParam, szValue, pTypeList, VCARD_TYPE_PARAM_NUM, pTmpParam, VCARD_PARAM_TYPE, enc);
-                                               SET_PARAM_VALUE(numberedParam, szValue, pValueList, VCARD_VALUE_PARAM_NUM, pTmpParam, VCARD_PARAM_VALUE, enc);
-                                               SET_PARAM_VALUE(numberedParam, szValue, pEncList, VCARD_ENCODE_PARAM_NUM, pTmpParam, VCARD_PARAM_ENCODING, enc);
-                                               SET_PARAM_VALUE(numberedParam, szValue, pCharsetList, VCARD_CHARSET_PARAM_NUM, pTmpParam, VCARD_PARAM_CHARSET, enc);
-
-                                               numberedParam = 0;
-                                               pCardRaw += dLen;
-                                               dLen = 0;
-
-                                               break;
-                               }
-
-                               VDATA_TRACE("%d, %s, %p", numberedParam, szValue, pTmpParam);
-                               pTmpParam->paramValue = numberedParam;
-                               pTmpParam->pNext = NULL;
-                               VFREE(szValue);
-                               pCardRaw += dLen;
                                break;
-                       case VCARD_TYPE_VALUE_STATUS:
-                               dLen = 0;
-                               temp = __VCardGetTypeVal(pCardRaw, &status, &dLen, enc, pVCard->pCur);
+                       default:
+                               szValue = __VCardGetParamVal(pCardRaw, &status, &dLen);
 
-                               if (valueCount < VDATA_VALUE_COUNT_MAX) {
-                                       pVCard->pCur->pszValue[valueCount] = temp;
-                                       valueCount++;
-                                       pVCard->pCur->valueCount = valueCount;
-                               } else
-                                       VFREE(temp);
+                               SET_PARAM_VALUE(numberedParam, szValue, pTypeList, VCARD_TYPE_PARAM_NUM, pTmpParam, VCARD_PARAM_TYPE, enc);
+                               SET_PARAM_VALUE(numberedParam, szValue, pValueList, VCARD_VALUE_PARAM_NUM, pTmpParam, VCARD_PARAM_VALUE, enc);
+                               SET_PARAM_VALUE(numberedParam, szValue, pEncList, VCARD_ENCODE_PARAM_NUM, pTmpParam, VCARD_PARAM_ENCODING, enc);
+                               SET_PARAM_VALUE(numberedParam, szValue, pCharsetList, VCARD_CHARSET_PARAM_NUM, pTmpParam, VCARD_PARAM_CHARSET, enc);
 
+                               numberedParam = 0;
                                pCardRaw += dLen;
+                               dLen = 0;
+
                                break;
+                       }
+
+                       VDATA_TRACE("%d, %s, %p", numberedParam, szValue, pTmpParam);
+                       pTmpParam->paramValue = numberedParam;
+                       pTmpParam->pNext = NULL;
+                       VFREE(szValue);
+                       pCardRaw += dLen;
+                       break;
+               case VCARD_TYPE_VALUE_STATUS:
+                       dLen = 0;
+                       temp = __VCardGetTypeVal(pCardRaw, &status, &dLen, enc, pVCard->pCur);
+
+                       if (valueCount < VDATA_VALUE_COUNT_MAX) {
+                               pVCard->pCur->pszValue[valueCount] = temp;
+                               valueCount++;
+                               pVCard->pCur->valueCount = valueCount;
+                       } else
+                               VFREE(temp);
+
+                       pCardRaw += dLen;
+                       break;
                }
        }
 
        VFREE(pCardRawTmp);
 
-       if (pVCard->pTop == NULL)
+       if (pVCard == NULL || pVCard->pTop == NULL)
                goto CATCH;
 
-       if (!vcard_ended) {
+       if (!vcard_ended)
                goto CATCH1;
-       }
+
        VDATA_TRACE_END
        return pVCard;
 
@@ -1071,12 +1072,13 @@ char* vcard_encode(VTree *pVCardRaw)
 {
        VDATA_TRACE_BEGINE
        char*           pVCardRes = NULL;
+       char*           pTempVCard = NULL;
        VObject *       pTmpObj =  NULL;
        char*           pTemp = NULL;
        int                     len;
        int                     total = 0;
-       int             cnt = 0;
-       int             lenTypeList = 0;
+       int                     cnt = 0;
+       int                     lenTypeList = 0;
 
        LENGTH_TYPE_LIST(pszCardTypeList, lenTypeList);
 
@@ -1087,7 +1089,7 @@ char* vcard_encode(VTree *pVCardRaw)
        SysRequireEx(pVCardRaw->treeType == VCARD, NULL);
        SysRequireEx(pVCardRaw->pTop->valueCount > 0, NULL);
 
-       //VDATA_TRACE("START %d %d", pVCardRaw->pTop->property, lenTypeList);
+       /* VDATA_TRACE("START %d %d", pVCardRaw->pTop->property, lenTypeList); */
 
        for (; cnt < pVCardRaw->pTop->valueCount; cnt++) {
 
@@ -1117,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));
@@ -1141,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;
@@ -1166,14 +1172,14 @@ __VIsVcardFile(char *pCardRaw, int mode)
        char *pszVcardBegin = "BEGIN:VCARD";
 
        switch (mode) {
-               case CHECK_START:
-                       for (i = 0; i < 11; i++)
-                               if (*pszVcardBegin++ != *pCardRaw++)
-                                       rtnValue = false;
-                       break;
-
-               default:
-                       rtnValue = false;
+       case CHECK_START:
+               for (i = 0; i < 11; i++)
+                       if (*pszVcardBegin++ != *pCardRaw++)
+                               rtnValue = false;
+               break;
+
+       default:
+               rtnValue = false;
        }
        VDATA_TRACE_END
        return rtnValue;
@@ -1194,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;
@@ -1205,10 +1212,10 @@ __VCardTypeEncode(VObject *pTypeObj, char *pType)
        biLen = pTypeObj->numOfBiData;
 
 #ifdef VDATA_GROUPNAME_SUPPORTED
-       if (pTypeObj->pszGroupName != NULL) {
+       if (pTypeObj->pszGroupName != NULL)
                len += strlen(pTypeObj->pszGroupName) + 1;
-       }
-#endif // VDATA_GROUPNAME_SUPPORTED
+#endif /* VDATA_GROUPNAME_SUPPORTED */
+
        if ((szTypeValue = (char *)calloc(1,  total += (len+1))) == NULL) {
                VDATA_TRACE("__VCardTypeEncode():calloc failed\n");
                VDATA_TRACE_END
@@ -1220,27 +1227,33 @@ __VCardTypeEncode(VObject *pTypeObj, char *pType)
                g_strlcat(szTypeValue, pTypeObj->pszGroupName, total - strlen(szTypeValue));
                g_strlcat(szTypeValue, ".", total - strlen(szTypeValue));
        }
-#endif // VDATA_GROUPNAME_SUPPORTED
+#endif /* VDATA_GROUPNAME_SUPPORTED */
        g_strlcat(szTypeValue, pType, total - strlen(szTypeValue));
 
        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));
@@ -1252,7 +1265,7 @@ __VCardTypeEncode(VObject *pTypeObj, char *pType)
 
                        if (pTypeObj->pszValue[i] != NULL)
                                len += strlen(pTypeObj->pszValue[i]);
-         }
+               }
        } else {
                len += biLen;
        }
@@ -1327,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));
@@ -1372,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;
 
@@ -1395,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. */
@@ -1409,29 +1432,32 @@ __VCardParamEncode(VObject* pTypeObj, int* pEnc)
 
                /** Set Parameter Value name. */
                switch (pTemp->parameter) {
-                       case VCARD_PARAM_ENCODING:
-                               *pEnc = pTemp->paramValue;
-                               shift = VCARD_ENCODE_PARAM_NUM;
-                               pList = pEncList; bSupported = true;
-                               break;
-                       case VCARD_PARAM_TYPE:
-                               shift = VCARD_TYPE_PARAM_NUM;
-                               pList = pTypeList; bSupported = true;
-                               break;
-                       case VCARD_PARAM_VALUE:
-                               shift = VCARD_VALUE_PARAM_NUM;
-                               pList = pValueList; bSupported = true;
-                               break;
-                       case VCARD_PARAM_CHARSET:
-                               shift = VCARD_CHARSET_PARAM_NUM;
-                               pList = pCharsetList; bSupported = true;
-                               break;
-                       default:
-                               if ((szParam = (char*)realloc(szParam, 5)) == NULL) {
-                                       VDATA_TRACE_END
-                                       return NULL;
-                               }
-                               g_strlcat(szParam, "NONE", 5 - strlen(szParam));
+               case VCARD_PARAM_ENCODING:
+                       *pEnc = pTemp->paramValue;
+                       shift = VCARD_ENCODE_PARAM_NUM;
+                       pList = pEncList; bSupported = true;
+                       break;
+               case VCARD_PARAM_TYPE:
+                       shift = VCARD_TYPE_PARAM_NUM;
+                       pList = pTypeList; bSupported = true;
+                       break;
+               case VCARD_PARAM_VALUE:
+                       shift = VCARD_VALUE_PARAM_NUM;
+                       pList = pValueList; bSupported = true;
+                       break;
+               case VCARD_PARAM_CHARSET:
+                       shift = VCARD_CHARSET_PARAM_NUM;
+                       pList = pCharsetList; bSupported = true;
+                       break;
+               default:
+                       if ((szTemp = (char*)realloc(szParam, 5)) == NULL) {
+                               VFREE(szParam);
+                               VDATA_TRACE_END
+                               return NULL;
+                       } else {
+                               szParam = szTemp;
+                       }
+                       g_strlcat(szParam, "NONE", 5 - strlen(szParam));
                }
 
                /** exchage parameter value's to string.*/
@@ -1440,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));