diff --git a/src/syscap_tool.c b/src/syscap_tool.c index 6b04e2c..3e27adb 100644 --- a/src/syscap_tool.c +++ b/src/syscap_tool.c @@ -474,13 +474,20 @@ int32_t EncodeRpcidscToString(char *inputFile, char *outDirPath) // trans to string format freeAfterEncodeRpcidscInfo.sysCapDefine = CreateWholeSyscapJsonObj(); sysCapArray = cJSON_GetObjectItem(freeAfterEncodeRpcidscInfo.rpcidRoot, "syscap"); - if (sysCapArray == NULL || !cJSON_IsArray(sysCapArray)) { + if (sysCapArray == NULL) { + PRINT_ERR("syscap array is null. Input file: %s\n", inputFile); + return FreeAfterEncodeRpcidsc(freeAfterEncodeRpcidscInfo, FREE_WHOLE_SYSCAP_AFTER_RPCIDSC, ret); + } + if (!cJSON_IsArray(sysCapArray)) { PRINT_ERR("Get syscap failed. Input file: %s\n", inputFile); + sysCapArray = NULL; return FreeAfterEncodeRpcidsc(freeAfterEncodeRpcidscInfo, FREE_WHOLE_SYSCAP_AFTER_RPCIDSC, ret); } sysCapArraySize = cJSON_GetArraySize(sysCapArray); if (sysCapArraySize < 0) { PRINT_ERR("Get syscap size failed. Input file: %s\n", inputFile); + sysCapArray = NULL; + sysCapArraySize = NULL; return FreeAfterEncodeRpcidsc(freeAfterEncodeRpcidscInfo, FREE_WHOLE_SYSCAP_AFTER_RPCIDSC, ret); } // malloc for save os syscap index @@ -492,6 +499,7 @@ int32_t EncodeRpcidscToString(char *inputFile, char *outDirPath) ret = OutputSetMemAndPrintToFile(freeAfterEncodeRpcidscInfo, sysCapArraySize, sysCapArray, outDirPath); if (freeAfterEncodeRpcidscInfo.flag == 1) { + freeAfterEncodeRpcidscInfo.osSysCapIndex = NULL; return FreeAfterEncodeRpcidsc(freeAfterEncodeRpcidscInfo, freeAfterEncodeRpcidscInfo.type, ret); } return FreeAfterEncodeRpcidsc(freeAfterEncodeRpcidscInfo, FREE_OUTBUFFER_AFTER_RPCIDSC, ret);