diff --git a/src/context_tool.c b/src/context_tool.c index 60e5e4c..1440a6b 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 09aaa64..64814f3 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 3bcd76a..b2ab4fd 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) {