BaseTools/C/Common: 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:
@ -650,6 +650,10 @@ Returns:
|
|||||||
ImageContext,
|
ImageContext,
|
||||||
RelocDir->VirtualAddress + RelocDir->Size - 1
|
RelocDir->VirtualAddress + RelocDir->Size - 1
|
||||||
);
|
);
|
||||||
|
if (RelocBase == NULL || RelocBaseEnd == NULL || RelocBaseEnd < RelocBase) {
|
||||||
|
ImageContext->ImageError = IMAGE_ERROR_FAILED_RELOCATION;
|
||||||
|
return RETURN_LOAD_ERROR;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
//
|
//
|
||||||
// Set base and end to bypass processing below.
|
// Set base and end to bypass processing below.
|
||||||
@ -674,6 +678,10 @@ Returns:
|
|||||||
ImageContext,
|
ImageContext,
|
||||||
RelocDir->VirtualAddress + RelocDir->Size - 1
|
RelocDir->VirtualAddress + RelocDir->Size - 1
|
||||||
);
|
);
|
||||||
|
if (RelocBase == NULL || RelocBaseEnd == NULL || RelocBaseEnd < RelocBase) {
|
||||||
|
ImageContext->ImageError = IMAGE_ERROR_FAILED_RELOCATION;
|
||||||
|
return RETURN_LOAD_ERROR;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
//
|
//
|
||||||
// Set base and end to bypass processing below.
|
// Set base and end to bypass processing below.
|
||||||
@ -710,6 +718,10 @@ Returns:
|
|||||||
RelocEnd = (UINT16 *) ((CHAR8 *) RelocBase + RelocBase->SizeOfBlock);
|
RelocEnd = (UINT16 *) ((CHAR8 *) RelocBase + RelocBase->SizeOfBlock);
|
||||||
if (!(ImageContext->IsTeImage)) {
|
if (!(ImageContext->IsTeImage)) {
|
||||||
FixupBase = PeCoffLoaderImageAddress (ImageContext, RelocBase->VirtualAddress);
|
FixupBase = PeCoffLoaderImageAddress (ImageContext, RelocBase->VirtualAddress);
|
||||||
|
if (FixupBase == NULL) {
|
||||||
|
ImageContext->ImageError = IMAGE_ERROR_FAILED_RELOCATION;
|
||||||
|
return RETURN_LOAD_ERROR;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
FixupBase = (CHAR8 *)(UINTN)(ImageContext->ImageAddress +
|
FixupBase = (CHAR8 *)(UINTN)(ImageContext->ImageAddress +
|
||||||
RelocBase->VirtualAddress +
|
RelocBase->VirtualAddress +
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
EFI tools utility functions to display warning, error, and informational messages
|
EFI tools utility functions to display warning, error, and informational messages
|
||||||
|
|
||||||
Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
@ -451,14 +451,16 @@ Notes:
|
|||||||
//
|
//
|
||||||
time (&CurrentTime);
|
time (&CurrentTime);
|
||||||
NewTime = localtime (&CurrentTime);
|
NewTime = localtime (&CurrentTime);
|
||||||
fprintf (stdout, "%04d-%02d-%02d %02d:%02d:%02d",
|
if (NewTime != NULL) {
|
||||||
NewTime->tm_year + 1900,
|
fprintf (stdout, "%04d-%02d-%02d %02d:%02d:%02d",
|
||||||
NewTime->tm_mon + 1,
|
NewTime->tm_year + 1900,
|
||||||
NewTime->tm_mday,
|
NewTime->tm_mon + 1,
|
||||||
NewTime->tm_hour,
|
NewTime->tm_mday,
|
||||||
NewTime->tm_min,
|
NewTime->tm_hour,
|
||||||
NewTime->tm_sec
|
NewTime->tm_min,
|
||||||
);
|
NewTime->tm_sec
|
||||||
|
);
|
||||||
|
}
|
||||||
if (Cptr != NULL) {
|
if (Cptr != NULL) {
|
||||||
sprintf (Line, ": %s", Cptr);
|
sprintf (Line, ": %s", Cptr);
|
||||||
if (LineNumber != 0) {
|
if (LineNumber != 0) {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
EFI Firmware Volume routines which work on a Fv image in buffers.
|
EFI Firmware Volume routines which work on a Fv image in buffers.
|
||||||
|
|
||||||
Copyright (c) 1999 - 2015, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 1999 - 2016, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
@ -353,6 +353,9 @@ Returns:
|
|||||||
|
|
||||||
if (*DestinationFv == NULL) {
|
if (*DestinationFv == NULL) {
|
||||||
*DestinationFv = CommonLibBinderAllocate (size);
|
*DestinationFv = CommonLibBinderAllocate (size);
|
||||||
|
if (*DestinationFv == NULL) {
|
||||||
|
return EFI_OUT_OF_RESOURCES;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CommonLibBinderCopyMem (*DestinationFv, SourceFv, size);
|
CommonLibBinderCopyMem (*DestinationFv, SourceFv, size);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
File for memory allocation tracking functions.
|
File for memory allocation tracking functions.
|
||||||
|
|
||||||
Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
@ -73,7 +73,18 @@ MyCheck (
|
|||||||
//
|
//
|
||||||
// Check parameters.
|
// Check parameters.
|
||||||
//
|
//
|
||||||
if (File == NULL || Line == 0) {
|
if (File == NULL) {
|
||||||
|
printf (
|
||||||
|
"\nMyCheck(Final=%u, File=NULL, Line=%u)"
|
||||||
|
"Invalid parameter(s).\n",
|
||||||
|
Final,
|
||||||
|
(unsigned)Line
|
||||||
|
);
|
||||||
|
|
||||||
|
exit (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Line == 0) {
|
||||||
printf (
|
printf (
|
||||||
"\nMyCheck(Final=%u, File=%s, Line=%u)"
|
"\nMyCheck(Final=%u, File=%s, Line=%u)"
|
||||||
"Invalid parameter(s).\n",
|
"Invalid parameter(s).\n",
|
||||||
@ -190,7 +201,18 @@ MyAlloc (
|
|||||||
//
|
//
|
||||||
// Check for invalid parameters.
|
// Check for invalid parameters.
|
||||||
//
|
//
|
||||||
if (Size == 0 || File == NULL || Line == 0) {
|
if (File == NULL) {
|
||||||
|
printf (
|
||||||
|
"\nMyAlloc(Size=%u, File=NULL, Line=%u)"
|
||||||
|
"\nInvalid parameter(s).\n",
|
||||||
|
(unsigned)Size,
|
||||||
|
(unsigned)Line
|
||||||
|
);
|
||||||
|
|
||||||
|
exit (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Size == 0 || Line == 0) {
|
||||||
printf (
|
printf (
|
||||||
"\nMyAlloc(Size=%u, File=%s, Line=%u)"
|
"\nMyAlloc(Size=%u, File=%s, Line=%u)"
|
||||||
"\nInvalid parameter(s).\n",
|
"\nInvalid parameter(s).\n",
|
||||||
@ -303,7 +325,19 @@ MyRealloc (
|
|||||||
//
|
//
|
||||||
// Check for invalid parameter(s).
|
// Check for invalid parameter(s).
|
||||||
//
|
//
|
||||||
if (Size == 0 || File == NULL || Line == 0) {
|
if (File == NULL) {
|
||||||
|
printf (
|
||||||
|
"\nMyRealloc(Ptr=%p, Size=%u, File=NULL, Line=%u)"
|
||||||
|
"\nInvalid parameter(s).\n",
|
||||||
|
Ptr,
|
||||||
|
(unsigned)Size,
|
||||||
|
(unsigned)Line
|
||||||
|
);
|
||||||
|
|
||||||
|
exit (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Size == 0 || Line == 0) {
|
||||||
printf (
|
printf (
|
||||||
"\nMyRealloc(Ptr=%p, Size=%u, File=%s, Line=%u)"
|
"\nMyRealloc(Ptr=%p, Size=%u, File=%s, Line=%u)"
|
||||||
"\nInvalid parameter(s).\n",
|
"\nInvalid parameter(s).\n",
|
||||||
@ -408,7 +442,18 @@ MyFree (
|
|||||||
//
|
//
|
||||||
// Check for invalid parameter(s).
|
// Check for invalid parameter(s).
|
||||||
//
|
//
|
||||||
if (File == NULL || Line == 0) {
|
if (File == NULL) {
|
||||||
|
printf (
|
||||||
|
"\nMyFree(Ptr=%p, File=NULL, Line=%u)"
|
||||||
|
"\nInvalid parameter(s).\n",
|
||||||
|
Ptr,
|
||||||
|
(unsigned)Line
|
||||||
|
);
|
||||||
|
|
||||||
|
exit (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Line == 0) {
|
||||||
printf (
|
printf (
|
||||||
"\nMyFree(Ptr=%p, File=%s, Line=%u)"
|
"\nMyFree(Ptr=%p, File=%s, Line=%u)"
|
||||||
"\nInvalid parameter(s).\n",
|
"\nInvalid parameter(s).\n",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
Helper functions for parsing GuidedSectionTools.txt
|
Helper functions for parsing GuidedSectionTools.txt
|
||||||
|
|
||||||
Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
@ -144,13 +144,14 @@ Returns:
|
|||||||
NewGuidTool->Name = CloneString(Tool->Strings[1]);
|
NewGuidTool->Name = CloneString(Tool->Strings[1]);
|
||||||
NewGuidTool->Path = CloneString(Tool->Strings[2]);
|
NewGuidTool->Path = CloneString(Tool->Strings[2]);
|
||||||
NewGuidTool->Next = NULL;
|
NewGuidTool->Next = NULL;
|
||||||
|
|
||||||
|
if (FirstGuidTool == NULL) {
|
||||||
|
FirstGuidTool = NewGuidTool;
|
||||||
|
} else {
|
||||||
|
LastGuidTool->Next = NewGuidTool;
|
||||||
|
}
|
||||||
|
LastGuidTool = NewGuidTool;
|
||||||
}
|
}
|
||||||
if (FirstGuidTool == NULL) {
|
|
||||||
FirstGuidTool = NewGuidTool;
|
|
||||||
} else {
|
|
||||||
LastGuidTool->Next = NewGuidTool;
|
|
||||||
}
|
|
||||||
LastGuidTool = NewGuidTool;
|
|
||||||
}
|
}
|
||||||
FreeStringList (Tool);
|
FreeStringList (Tool);
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ coding. LZ77 transforms the source data into a sequence of Original Characters
|
|||||||
and Pointers to repeated strings. This sequence is further divided into Blocks
|
and Pointers to repeated strings. This sequence is further divided into Blocks
|
||||||
and Huffman codings are applied to each Block.
|
and Huffman codings are applied to each Block.
|
||||||
|
|
||||||
Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
@ -417,6 +417,9 @@ Returns:
|
|||||||
UINT32 Index;
|
UINT32 Index;
|
||||||
|
|
||||||
mText = malloc (WNDSIZ * 2 + MAXMATCH);
|
mText = malloc (WNDSIZ * 2 + MAXMATCH);
|
||||||
|
if (mText == NULL) {
|
||||||
|
return EFI_OUT_OF_RESOURCES;
|
||||||
|
}
|
||||||
for (Index = 0; Index < WNDSIZ * 2 + MAXMATCH; Index++) {
|
for (Index = 0; Index < WNDSIZ * 2 + MAXMATCH; Index++) {
|
||||||
mText[Index] = 0;
|
mText[Index] = 0;
|
||||||
}
|
}
|
||||||
@ -427,6 +430,10 @@ Returns:
|
|||||||
mParent = malloc (WNDSIZ * 2 * sizeof (*mParent));
|
mParent = malloc (WNDSIZ * 2 * sizeof (*mParent));
|
||||||
mPrev = malloc (WNDSIZ * 2 * sizeof (*mPrev));
|
mPrev = malloc (WNDSIZ * 2 * sizeof (*mPrev));
|
||||||
mNext = malloc ((MAX_HASH_VAL + 1) * sizeof (*mNext));
|
mNext = malloc ((MAX_HASH_VAL + 1) * sizeof (*mNext));
|
||||||
|
if (mLevel == NULL || mChildCount == NULL || mPosition == NULL ||
|
||||||
|
mParent == NULL || mPrev == NULL || mNext == NULL) {
|
||||||
|
return EFI_OUT_OF_RESOURCES;
|
||||||
|
}
|
||||||
|
|
||||||
mBufSiz = BLKSIZ;
|
mBufSiz = BLKSIZ;
|
||||||
mBuf = malloc (mBufSiz);
|
mBuf = malloc (mBufSiz);
|
||||||
|
Reference in New Issue
Block a user