diff --git a/src/create_pcid.c b/src/create_pcid.c index 2ddac7947a0843f5837cc295b5abcc73a6ec42a6..ea640b4c7a512f7c76e353955552e9d07ff18483 100644 --- a/src/create_pcid.c +++ b/src/create_pcid.c @@ -216,7 +216,13 @@ int32_t CreatePCID(char *inputFile, char *outDirPath) jsonPriSyscapObj = cJSON_GetObjectItem(jsonSyscapObj, "private"); if (jsonPriSyscapObj != NULL && cJSON_IsArray(jsonPriSyscapObj)) { - privateCapSize = cJSON_GetArraySize(jsonPriSyscapObj); + ret = cJSON_GetArraySize(jsonPriSyscapObj); + if (ret < 0) { + PRINT_ERR("get \"private syscap\" array size failed\n"); + ret = -1; + goto FREE_CONVERT_OUT; + } + privateCapSize = (uint32_t)ret; } else if (jsonPriSyscapObj == NULL) { privateCapSize = 0; } else { diff --git a/src/syscap_tool.c b/src/syscap_tool.c index a8053cf2e5b319aed6e40524038b2641656fb99d..f8e8cad08adbc90bd378568b05a3b138e60d5a91 100644 --- a/src/syscap_tool.c +++ b/src/syscap_tool.c @@ -627,12 +627,13 @@ int32_t RPCIDEncode(char *inputFile, char *outDirPath) goto FREE_CONTEXT_OUT; } - sysCapSize = cJSON_GetArraySize(sysCapPtr); - if (sysCapSize < 0) { + ret = cJSON_GetArraySize(sysCapPtr); + if (ret < 0) { PRINT_ERR("get \"syscap\" array size failed\n"); ret = -1; goto FREE_CONTEXT_OUT; } + sysCapSize = (uint32_t)ret; // 2, to save SysCaptype & SysCapLength convertedBufLen += (2 * sizeof(uint16_t) + sysCapSize * SINGLE_FEAT_LENGTH);