diff --git a/src/context_tool.c b/src/context_tool.c index 60e5e4c513dd16e065c295cc07e53c76227faa61..1440a6bc3c60a28a667742b63f39c41140d630af 100644 --- a/src/context_tool.c +++ b/src/context_tool.c @@ -155,11 +155,13 @@ int32_t CheckRpcidFormat(const char *inputFile, char **buffer, uint32_t *len) } if (bufferLen < (2 * sizeof(uint32_t))) { // 2, header of rpcid.sc PRINT_ERR("Parse file failed(format is invalid), input file : %s\n", inputFile); + free(contextBuffer); return -1; } rpcidHeader = (RPCIDHead *)contextBuffer; if (rpcidHeader->apiVersionType != 1) { PRINT_ERR("Parse file failed(apiVersionType != 1), input file : %s\n", inputFile); + free(contextBuffer); return -1; } sysCaptype = NtohsInter(*(uint16_t *)(rpcidHeader + 1)); diff --git a/src/create_pcid.c b/src/create_pcid.c index 09aaa64d26d42d638348e57697302d36e2a5198a..64814f3534ccf058debc137375b6e2a8a1178a13 100644 --- a/src/create_pcid.c +++ b/src/create_pcid.c @@ -705,7 +705,6 @@ static int32_t GetSyscapStr(char *input, char const *priSyscapStr, uint32_t* osS return -1; } priSyscapStr = ctx; - free(ctx); return 0; } @@ -735,6 +734,7 @@ int32_t DecodeStringPCIDToJson(char *input, char *outDirPath) PRINT_ERR("Add os syscap json object failed.\n"); goto ADD_JSON_FAILED; } + if (AddPriSyscapToJsonObj(priSyscapStr, (uint32_t)strlen(priSyscapStr), sysCapObj) != 0) { PRINT_ERR("Add private syscap json object failed.\n"); goto ADD_JSON_FAILED; diff --git a/src/syscap_tool.c b/src/syscap_tool.c index 3bcd76a6d3c68624f4f1c97647e16a2f5e8e67f1..b2ab4fdb4581cd1dbd7cd0b19f4e2d5e44e130a7 100644 --- a/src/syscap_tool.c +++ b/src/syscap_tool.c @@ -658,7 +658,7 @@ int32_t ComparePriSyscap(char *pcid, char *rpcid, uint32_t pcidLen, uint32_t rpc return prisyscapFlag; } -int32_t CompoareVersion(uint32_t *pcidOsArray, uint32_t *rpcidOsAarry) +static int32_t CompareVersion(uint32_t *pcidOsArray, uint32_t *rpcidOsAarry) { int32_t versionFlag = 0; uint16_t pcidVersion = NtohsInter(((PCIDMain *)pcidOsArray)->apiVersion); @@ -705,10 +705,14 @@ int32_t ComparePcidWithRpcidString(char *pcidFile, char *rpcidFile, uint32_t typ &rpcidPriSyscap, &rpcidPriSyscapLen); if (ret != 0) { PRINT_ERR("Separate syscap from string failed. ret = %d\n", ret); + free(pcidContent); + free(rpcidContent); + free(pcidPriSyscap); + free(rpcidPriSyscap); return -1; } - int32_t versionFlag = CompoareVersion(pcidOsArray, rpcidOsAarry); + int32_t versionFlag = CompareVersion(pcidOsArray, rpcidOsAarry); int32_t ossyscapFlag = CompareOsSyscap(pcidOsArray, rpcidOsAarry); int32_t prisyscapFlag = ComparePriSyscap(pcidPriSyscap, rpcidPriSyscap, pcidPriSyscapLen, rpcidPriSyscapLen); if (!versionFlag && !ossyscapFlag && !prisyscapFlag) {