diff --git a/interfaces/inner_api/syscap_interface.c b/interfaces/inner_api/syscap_interface.c index f2f8738f4af0916b68a692241f3ef172c073c8dd..00954b12bd5dbea7a8116e7e3db05d36afedc606 100644 --- a/interfaces/inner_api/syscap_interface.c +++ b/interfaces/inner_api/syscap_interface.c @@ -121,17 +121,20 @@ bool EncodePrivateSyscap(char **output, int *outputLen) if (bufferLen < (PCID_MAIN_BYTES + 1) || bufferLen > INT32_MAX) { PRINT_ERR("Parameter bufferLen out of range."); + FreeContextBuffer(contextBuffer); return false; } uint32_t priLen = bufferLen - PCID_MAIN_BYTES - 1; if ((int)priLen <= 0) { *outputLen = 0; + FreeContextBuffer(contextBuffer); return false; } outputStr = (char *)calloc(priLen, sizeof(char)); if (outputStr == NULL) { PRINT_ERR("malloc buffer failed, size = %u, errno = %d\n", priLen, errno); *outputLen = 0; + FreeContextBuffer(contextBuffer); return false; } @@ -246,6 +249,7 @@ bool DecodePrivateSyscap(char *input, char (**output)[SINGLE_SYSCAP_LEN], int *o *bufferPos = '\0'; if (sprintf_s(*outputArray, SINGLE_SYSCAP_LEN, "SystemCapability.%s", buffer) == -1) { free(outputArray); + outputArray = NULL; return false; } bufferPos = buffer; @@ -512,6 +516,7 @@ char *DecodeRpcidToStringFormat(const char *inputFile) } PartSysCapAndOutBuffer(freeAfterDecodeRpcidInfo, outBuffer, priSyscapArray, sysCapArray); + priSyscapArray = NULL; return FreeAfterDecodeRpcidToString(freeAfterDecodeRpcidInfo, FREE_MALLOC_PRISYSCAP_AFTER_DECODE_RPCID, outBuffer); } @@ -525,7 +530,7 @@ static int32_t CopySyscopToRet(struct PcidPriSyscapInfo *pcidPriSyscapInfo, cons break; } } - if(t == allSyscapNum){ + if (t == allSyscapNum) { return -1; } pcidPriSyscapInfo->ret = strcpy_s(tempSyscap, sizeof(char) * SINGLE_SYSCAP_LEN, g_arraySyscap[t].str); diff --git a/src/create_pcid.c b/src/create_pcid.c index d08ff36f5f0f1364760394dcffc74320c39510e8..2c9da93b0652df4e81c27aee0add411416785e3b 100644 --- a/src/create_pcid.c +++ b/src/create_pcid.c @@ -332,6 +332,7 @@ int32_t GetOsSyscap(PCIDMain *pcidMain, cJSON *sysCapObject) } if (!cJSON_AddItemToArray(capVectorPtr, cJSON_CreateString(g_arraySyscap[j].str))) { printf("cJSON_AddItemToArray or cJSON_CreateString failed\n"); + cJSON_Delete(capVectorPtr); return -1; } } @@ -339,9 +340,11 @@ int32_t GetOsSyscap(PCIDMain *pcidMain, cJSON *sysCapObject) if (!cJSON_AddItemToObject(sysCapObject, "os", capVectorPtr)) { PRINT_ERR("cJSON_AddItemToObject failed\n"); + cJSON_Delete(capVectorPtr); return -1; } - + + cJSON_Delete(capVectorPtr); return 0; }