!496 处理安全告警

Merge pull request !496 from Mr.zhao/master
This commit is contained in:
openharmony_ci
2024-09-19 11:24:48 +00:00
committed by Gitee
5 changed files with 46 additions and 10 deletions
+1
View File
@@ -40,6 +40,7 @@ typedef struct RequiredProductCompatibilityIDHead {
void FreeContextBuffer(char *contextBuffer);
int32_t GetFileContext(const char *inputFile, char **contextBufPtr, uint32_t *bufferLen);
int32_t CheckFileAndGetFileContext(const char *inputFile, char **contextBufPtr, uint32_t *bufferLen);
int32_t ConvertedContextSaveAsFile(char *outDirPath, const char *filename, char *convertedBuffer, size_t contextBufLen);
int32_t CheckRpcidFormat(const char *inputFile, char **buffer, uint32_t *len);
cJSON *CreateWholeSyscapJsonObj(void);
+6
View File
@@ -625,6 +625,12 @@ static int32_t ComparePcidWithPriSyscap(struct PcidPriSyscapInfo pcidPriSyscapIn
free(temp);
return -1;
}
if (pcidPriSyscapInfo.ossyscapFlag + prisyscapFlag >= MAX_MISS_SYSCAP) {
FreeCompareError(result);
PRINT_ERR("array index out of bounds.\n");
free(temp);
return -1;
}
result->syscap[pcidPriSyscapInfo.ossyscapFlag + prisyscapFlag] = temp;
++prisyscapFlag;
}
+13
View File
@@ -92,6 +92,19 @@ int32_t GetFileContext(const char *inputFile, char **contextBufPtr, uint32_t *bu
return 0;
}
int32_t CheckFileAndGetFileContext(const char *inputFile, char **contextBufPtr, uint32_t *bufferLen)
{
if (inputFile == NULL) {
PRINT_ERR("input file is NULL.\n");
return -1;
}
uint32_t ret = GetFileContext(inputFile, contextBufPtr, bufferLen);
if (ret != 0) {
PRINT_ERR("GetFileContext failed, input file : %s\n", inputFile);
}
return ret;
}
int32_t ConvertedContextSaveAsFile(char *outDirPath, const char *filename, char *convertedBuffer, size_t contextBufLen)
{
int32_t ret;
+10 -8
View File
@@ -249,11 +249,10 @@ int32_t CreatePCID(char *inputFile, char *outDirPath)
uint32_t privateCapSize, osCapSize;
uint32_t contextBufLen;
char *contextBuffer = NULL;
cJSON *allOsSyscapObj = CreateWholeSyscapJsonObj();
int32_t ret = GetFileContext(inputFile, &contextBuffer, (uint32_t *)&contextBufLen);
cJSON *allOsSyscapObj = CreateWholeSyscapJsonObj();
int32_t ret = CheckFileAndGetFileContext(inputFile, &contextBuffer, (uint32_t *)&contextBufLen);
if (ret != 0) {
PRINT_ERR("GetFileContext failed, input file : %s\n", inputFile);
return FreeAfterCreatePCID(NULL, allOsSyscapObj, contextBuffer, 0, -1);
}
@@ -481,10 +480,9 @@ int32_t DecodePCID(char *inputFile, char *outDirPath)
freePcidJsonInfo.jsonRootObj = NULL;
freePcidJsonInfo.sysCapObj = NULL;
freePcidJsonInfo.flag = 0;
ret = GetFileContext(inputFile, &freePcidJsonInfo.contextBuffer, (uint32_t *)&contextBufLen);
ret = CheckFileAndGetFileContext(inputFile, &freePcidJsonInfo.contextBuffer, (uint32_t *)&contextBufLen);
if (ret != 0) {
PRINT_ERR("GetFileContext failed, input file : %s\n", inputFile);
return -1;
}
@@ -693,6 +691,10 @@ static int32_t AddPriSyscapToJsonObj(char *priSyscapString, uint32_t priSyscapSt
static int32_t GetSyscapStr(char *input, char const *priSyscapStr, uint32_t* osSyscap, uint32_t *pcidHeader)
{
if (input == NULL) {
PRINT_ERR("inputFile is null.\n");
return -1;
}
char *ctx = NULL;
uint32_t fileContextLen;
if (GetFileContext(input, &ctx, (uint32_t *)&fileContextLen) != 0) {
@@ -715,6 +717,7 @@ int32_t DecodeStringPCIDToJson(char *input, char *outDirPath)
uint32_t pcidHeader[PCID_HEADER];
char *priSyscapStr = NULL;
char *jsonBuffer = NULL;
ret = GetSyscapStr(input, priSyscapStr, osSyscap, pcidHeader);
if (ret == -1) {
return ret;
@@ -872,9 +875,8 @@ int32_t EncodePcidscToString(char *inputFile, char *outDirPath)
freePcidInfo.outDirPathFinal = outDirPath;
PCIDMain *pcidMain = NULL;
ret = GetFileContext(inputFile, &freePcidInfo.contextBuffer, (uint32_t *)&bufferLen);
ret = CheckFileAndGetFileContext(inputFile, &freePcidInfo.contextBuffer, (uint32_t *)&bufferLen);
if (ret != 0) {
PRINT_ERR("Get pcid file failed, pcid file path: %s\n", inputFile);
return -1;
}
+16 -2
View File
@@ -150,8 +150,7 @@ int32_t RPCIDEncode(char *inputFile, char *outputPath)
gJsonObjectSysCap.cjsonObjectRoot = NULL;
gJsonObjectSysCap.sysCapPtr = NULL;
if (GetFileContext(inputFile, &contextBuffer, &bufferLen) != 0) {
PRINT_ERR("GetFileContext failed, input file : %s\n", inputFile);
if (CheckFileAndGetFileContext(inputFile, &contextBuffer, &bufferLen) != 0) {
return -1;
}
@@ -262,6 +261,11 @@ int32_t RPCIDDecode(char *inputFile, char *outputPath)
char *convertedBuffer = NULL;
uint32_t bufferLen;
if (inputFile == NULL) {
PRINT_ERR("inputFile is null.\n");
return -1;
}
// check rpcid.sc
if (CheckRpcidFormat(inputFile, &contextBuffer, &bufferLen)) {
PRINT_ERR("Check rpcid.sc format failed. Input failed: %s\n", inputFile);
@@ -480,6 +484,11 @@ int32_t EncodeRpcidscToString(char *inputFile, char *outDirPath)
freeAfterEncodeRpcidscInfo.type = 0;
freeAfterEncodeRpcidscInfo.flag = 0;
if (inputFile == NULL) {
PRINT_ERR("inputFile is null.\n");
return -1;
}
// check rpcid.sc
if (CheckRpcidFormat(inputFile, &freeAfterEncodeRpcidscInfo.contextBuffer, &bufferLen) != 0) {
PRINT_ERR("Check rpcid.sc format failed. Input file: %s\n", inputFile);
@@ -699,6 +708,11 @@ int32_t ComparePcidWithRpcidString(char *pcidFile, char *rpcidFile, uint32_t typ
uint32_t pcidOsArray[PCID_OUT_BUFFER] = {0};
uint32_t rpcidOsAarry[PCID_OUT_BUFFER] = {0};
if (pcidFile == NULL || rpcidFile == NULL) {
PRINT_ERR("pcidFile or rpcidFile is null.\n");
return -1;
}
if (type == TYPE_FILE) {
if (GetFileContext(pcidFile, &pcidContent, &pcidContentLen)) {
PRINT_ERR("Get pcid file context failed, input file : %s\n", pcidFile);