BaseTools/GenVtf: 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:
Hao Wu 2016-10-11 10:25:34 +08:00
parent 248fce0329
commit 90114c101f

View File

@ -1125,6 +1125,7 @@ Returns:
EFI_ABORTED - Aborted due to one of the many reasons like: EFI_ABORTED - Aborted due to one of the many reasons like:
(a) Component Size greater than the specified size. (a) Component Size greater than the specified size.
(b) Error opening files. (b) Error opening files.
(c) Fail to get the FIT table address.
EFI_INVALID_PARAMETER Value returned from call to UpdateEntryPoint() EFI_INVALID_PARAMETER Value returned from call to UpdateEntryPoint()
EFI_OUT_OF_RESOURCES Memory allocation failure. EFI_OUT_OF_RESOURCES Memory allocation failure.
@ -1240,6 +1241,10 @@ Returns:
} }
GetNextAvailableFitPtr (&CompFitPtr); GetNextAvailableFitPtr (&CompFitPtr);
if (CompFitPtr == NULL) {
free (Buffer);
return EFI_ABORTED;
}
CompFitPtr->CompAddress = CompStartAddress | IPF_CACHE_BIT; CompFitPtr->CompAddress = CompStartAddress | IPF_CACHE_BIT;
if ((FileSize % 16) != 0) { if ((FileSize % 16) != 0) {
@ -2652,6 +2657,7 @@ Returns:
} }
SymFileName = VTF_SYM_FILE; SymFileName = VTF_SYM_FILE;
} else { } else {
assert (OutFileName1);
INTN OutFileNameLen = strlen(OutFileName1); INTN OutFileNameLen = strlen(OutFileName1);
INTN NewIndex; INTN NewIndex;
@ -2665,6 +2671,10 @@ Returns:
} else { } else {
INTN SymFileNameLen = NewIndex + 1 + strlen(VTF_SYM_FILE); INTN SymFileNameLen = NewIndex + 1 + strlen(VTF_SYM_FILE);
SymFileName = malloc(SymFileNameLen + 1); SymFileName = malloc(SymFileNameLen + 1);
if (SymFileName == NULL) {
Error (NULL, 0, 4001, "Resource", "memory cannot be allocated!");
goto ERROR;
}
memcpy(SymFileName, OutFileName1, NewIndex + 1); memcpy(SymFileName, OutFileName1, NewIndex + 1);
memcpy(SymFileName + NewIndex + 1, VTF_SYM_FILE, strlen(VTF_SYM_FILE)); memcpy(SymFileName + NewIndex + 1, VTF_SYM_FILE, strlen(VTF_SYM_FILE));
SymFileName[SymFileNameLen] = '\0'; SymFileName[SymFileNameLen] = '\0';