diff --git a/interfaces/inner_api/syscap_interface.c b/interfaces/inner_api/syscap_interface.c index 017eb5b..70e4e52 100644 --- a/interfaces/inner_api/syscap_interface.c +++ b/interfaces/inner_api/syscap_interface.c @@ -652,6 +652,7 @@ int32_t ComparePcidString(const char *pcidString, const char *rpcidString, Compa &pcidPriSyscapInfo.rpcidPriSyscap, &pcidPriSyscapInfo.rpcidPriSyscapLen); if (pcidPriSyscapInfo.ret != 0) { PRINT_ERR("Separate syscap from string failed. ret = %d\n", pcidPriSyscapInfo.ret); + free(pcidPriSyscapInfo.rpcidPriSyscap); return -1; } result->missSyscapNum = 0; diff --git a/src/context_tool.c b/src/context_tool.c index 60e5e4c..5d0eba1 100644 --- a/src/context_tool.c +++ b/src/context_tool.c @@ -160,6 +160,7 @@ int32_t CheckRpcidFormat(const char *inputFile, char **buffer, uint32_t *len) 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..0623c61 100644 --- a/src/create_pcid.c +++ b/src/create_pcid.c @@ -735,6 +735,12 @@ int32_t DecodeStringPCIDToJson(char *input, char *outDirPath) PRINT_ERR("Add os syscap json object failed.\n"); goto ADD_JSON_FAILED; } + + if (priSyscapStr == null){ + PRINT_ERR("priSyscapStr is null.\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..5093b0f 100644 --- a/src/syscap_tool.c +++ b/src/syscap_tool.c @@ -705,6 +705,7 @@ 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); return -1; }