mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-30 17:14:07 +02:00
BaseTools/VolInfo: Avoid possible NULL pointer dereference
Cc: Liming Gao <liming.gao@intel.com> Cc: Yonghong Zhu <yonghong.zhu@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
parent
9b78c54a09
commit
9dd00cb66e
@ -265,6 +265,10 @@ Returns:
|
|||||||
OpenSslPath = OpenSslCommand;
|
OpenSslPath = OpenSslCommand;
|
||||||
} else {
|
} else {
|
||||||
OpenSslPath = malloc(strlen(OpenSslEnv)+strlen(OpenSslCommand)+1);
|
OpenSslPath = malloc(strlen(OpenSslEnv)+strlen(OpenSslCommand)+1);
|
||||||
|
if (OpenSslPath == NULL) {
|
||||||
|
Error (NULL, 0, 4001, "Resource", "memory cannot be allocated!");
|
||||||
|
return GetUtilityStatus ();
|
||||||
|
}
|
||||||
CombinePath(OpenSslEnv, OpenSslCommand, OpenSslPath);
|
CombinePath(OpenSslEnv, OpenSslCommand, OpenSslPath);
|
||||||
}
|
}
|
||||||
if (OpenSslPath == NULL){
|
if (OpenSslPath == NULL){
|
||||||
@ -1623,9 +1627,11 @@ Returns:
|
|||||||
SectionHeaderLen = GetSectionHeaderLength((EFI_COMMON_SECTION_HEADER *)Ptr);
|
SectionHeaderLen = GetSectionHeaderLength((EFI_COMMON_SECTION_HEADER *)Ptr);
|
||||||
|
|
||||||
SectionName = SectionNameToStr (Type);
|
SectionName = SectionNameToStr (Type);
|
||||||
|
if (SectionName != NULL) {
|
||||||
printf ("------------------------------------------------------------\n");
|
printf ("------------------------------------------------------------\n");
|
||||||
printf (" Type: %s\n Size: 0x%08X\n", SectionName, (unsigned) SectionLength);
|
printf (" Type: %s\n Size: 0x%08X\n", SectionName, (unsigned) SectionLength);
|
||||||
free (SectionName);
|
free (SectionName);
|
||||||
|
}
|
||||||
|
|
||||||
switch (Type) {
|
switch (Type) {
|
||||||
case EFI_SECTION_RAW:
|
case EFI_SECTION_RAW:
|
||||||
@ -1653,6 +1659,10 @@ Returns:
|
|||||||
strlen (ToolOutputFileName) +
|
strlen (ToolOutputFileName) +
|
||||||
1
|
1
|
||||||
);
|
);
|
||||||
|
if (SystemCommand == NULL) {
|
||||||
|
Error (NULL, 0, 4001, "Resource", "memory cannot be allocated!");
|
||||||
|
return EFI_OUT_OF_RESOURCES;
|
||||||
|
}
|
||||||
sprintf (
|
sprintf (
|
||||||
SystemCommand,
|
SystemCommand,
|
||||||
SystemCommandFormatString,
|
SystemCommandFormatString,
|
||||||
@ -1678,13 +1688,19 @@ Returns:
|
|||||||
nFileLen = ftell(fp);
|
nFileLen = ftell(fp);
|
||||||
fseek(fp,0,SEEK_SET);
|
fseek(fp,0,SEEK_SET);
|
||||||
StrLine = malloc(nFileLen);
|
StrLine = malloc(nFileLen);
|
||||||
|
if (StrLine == NULL) {
|
||||||
|
fclose(fp);
|
||||||
|
free (SystemCommand);
|
||||||
|
Error (NULL, 0, 4001, "Resource", "memory cannot be allocated!");
|
||||||
|
return EFI_OUT_OF_RESOURCES;
|
||||||
|
}
|
||||||
fgets(StrLine, nFileLen, fp);
|
fgets(StrLine, nFileLen, fp);
|
||||||
NewStr = strrchr (StrLine, '=');
|
NewStr = strrchr (StrLine, '=');
|
||||||
printf (" SHA1: %s\n", NewStr + 1);
|
printf (" SHA1: %s\n", NewStr + 1);
|
||||||
free (StrLine);
|
free (StrLine);
|
||||||
}
|
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
remove(ToolInputFileName);
|
remove(ToolInputFileName);
|
||||||
remove(ToolOutputFileName);
|
remove(ToolOutputFileName);
|
||||||
free (SystemCommand);
|
free (SystemCommand);
|
||||||
@ -1845,6 +1861,19 @@ Returns:
|
|||||||
close(fd2);
|
close(fd2);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if ((ToolInputFile == NULL) || (ToolOutputFile == NULL)) {
|
||||||
|
if (ToolInputFile != NULL) {
|
||||||
|
free (ToolInputFile);
|
||||||
|
}
|
||||||
|
if (ToolOutputFile != NULL) {
|
||||||
|
free (ToolOutputFile);
|
||||||
|
}
|
||||||
|
free (ExtractionTool);
|
||||||
|
|
||||||
|
Error (NULL, 0, 4001, "Resource", "memory cannot be allocated!");
|
||||||
|
return EFI_OUT_OF_RESOURCES;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Construction 'system' command string
|
// Construction 'system' command string
|
||||||
//
|
//
|
||||||
@ -1856,6 +1885,14 @@ Returns:
|
|||||||
strlen (ToolOutputFile) +
|
strlen (ToolOutputFile) +
|
||||||
1
|
1
|
||||||
);
|
);
|
||||||
|
if (SystemCommand == NULL) {
|
||||||
|
free (ToolInputFile);
|
||||||
|
free (ToolOutputFile);
|
||||||
|
free (ExtractionTool);
|
||||||
|
|
||||||
|
Error (NULL, 0, 4001, "Resource", "memory cannot be allocated!");
|
||||||
|
return EFI_OUT_OF_RESOURCES;
|
||||||
|
}
|
||||||
sprintf (
|
sprintf (
|
||||||
SystemCommand,
|
SystemCommand,
|
||||||
SystemCommandFormatString,
|
SystemCommandFormatString,
|
||||||
@ -1884,6 +1921,7 @@ Returns:
|
|||||||
);
|
);
|
||||||
remove (ToolOutputFile);
|
remove (ToolOutputFile);
|
||||||
free (ToolOutputFile);
|
free (ToolOutputFile);
|
||||||
|
free (SystemCommand);
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
Error (NULL, 0, 0004, "unable to read decoded GUIDED section", NULL);
|
Error (NULL, 0, 0004, "unable to read decoded GUIDED section", NULL);
|
||||||
return EFI_SECTION_ERROR;
|
return EFI_SECTION_ERROR;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user