mirror of https://github.com/acidanthera/audk.git
BaseTools/C/Common: Fix potential memory leak
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
5e85fb52d0
commit
aee346514d
|
@ -934,7 +934,9 @@ Extract (
|
|||
UINT32 ScratchSize;
|
||||
EFI_STATUS Status;
|
||||
|
||||
Status = EFI_SUCCESS;
|
||||
Scratch = NULL;
|
||||
Status = EFI_SUCCESS;
|
||||
|
||||
switch (Algorithm) {
|
||||
case 0:
|
||||
*Destination = (VOID *)malloc(SrcSize);
|
||||
|
@ -948,30 +950,44 @@ Extract (
|
|||
Status = EfiGetInfo(Source, SrcSize, DstSize, &ScratchSize);
|
||||
if (Status == EFI_SUCCESS) {
|
||||
Scratch = (VOID *)malloc(ScratchSize);
|
||||
*Destination = (VOID *)malloc(*DstSize);
|
||||
if (Scratch != NULL && *Destination != NULL) {
|
||||
Status = EfiDecompress(Source, SrcSize, *Destination, *DstSize, Scratch, ScratchSize);
|
||||
} else {
|
||||
Status = EFI_OUT_OF_RESOURCES;
|
||||
if (Scratch == NULL) {
|
||||
return EFI_OUT_OF_RESOURCES;
|
||||
}
|
||||
|
||||
*Destination = (VOID *)malloc(*DstSize);
|
||||
if (*Destination == NULL) {
|
||||
free (Scratch);
|
||||
return EFI_OUT_OF_RESOURCES;
|
||||
}
|
||||
|
||||
Status = EfiDecompress(Source, SrcSize, *Destination, *DstSize, Scratch, ScratchSize);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
Status = TianoGetInfo(Source, SrcSize, DstSize, &ScratchSize);
|
||||
if (Status == EFI_SUCCESS) {
|
||||
Scratch = (VOID *)malloc(ScratchSize);
|
||||
*Destination = (VOID *)malloc(*DstSize);
|
||||
if (Scratch != NULL && *Destination != NULL) {
|
||||
Status = TianoDecompress(Source, SrcSize, *Destination, *DstSize, Scratch, ScratchSize);
|
||||
} else {
|
||||
Status = EFI_OUT_OF_RESOURCES;
|
||||
if (Scratch == NULL) {
|
||||
return EFI_OUT_OF_RESOURCES;
|
||||
}
|
||||
|
||||
*Destination = (VOID *)malloc(*DstSize);
|
||||
if (*Destination == NULL) {
|
||||
free (Scratch);
|
||||
return EFI_OUT_OF_RESOURCES;
|
||||
}
|
||||
|
||||
Status = TianoDecompress(Source, SrcSize, *Destination, *DstSize, Scratch, ScratchSize);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
Status = EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
if (Scratch != NULL) {
|
||||
free (Scratch);
|
||||
}
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
|
|
@ -186,6 +186,7 @@ Returns:
|
|||
|
||||
Status = FvBufClearAllFiles (TempFv);
|
||||
if (EFI_ERROR (Status)) {
|
||||
CommonLibBinderFree (TempFv);
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/** @file
|
||||
This contains some useful functions for accessing files.
|
||||
|
||||
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
|
||||
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
|
||||
|
@ -69,6 +69,7 @@ Returns:
|
|||
|
||||
NewMemoryFile = malloc (sizeof (*NewMemoryFile));
|
||||
if (NewMemoryFile == NULL) {
|
||||
free (InputFileImage);
|
||||
return EFI_OUT_OF_RESOURCES;
|
||||
}
|
||||
|
||||
|
|
|
@ -125,10 +125,12 @@ Returns:
|
|||
|
||||
Status = StripInfDscStringInPlace (NextLine);
|
||||
if (EFI_ERROR (Status)) {
|
||||
free (NextLine);
|
||||
break;
|
||||
}
|
||||
|
||||
if (NextLine[0] == '\0') {
|
||||
free (NextLine);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -153,8 +155,12 @@ Returns:
|
|||
LastGuidTool = NewGuidTool;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (Tool != NULL) {
|
||||
FreeStringList (Tool);
|
||||
}
|
||||
free (NextLine);
|
||||
}
|
||||
|
||||
return FirstGuidTool;
|
||||
|
|
Loading…
Reference in New Issue