UINT32 ScratchSize;\r
EFI_STATUS Status;\r
\r
- Status = EFI_SUCCESS;\r
+ Scratch = NULL;\r
+ Status = EFI_SUCCESS;\r
+\r
switch (Algorithm) {\r
case 0:\r
*Destination = (VOID *)malloc(SrcSize);\r
Status = EfiGetInfo(Source, SrcSize, DstSize, &ScratchSize);\r
if (Status == EFI_SUCCESS) {\r
Scratch = (VOID *)malloc(ScratchSize);\r
+ if (Scratch == NULL) {\r
+ return EFI_OUT_OF_RESOURCES;\r
+ }\r
+\r
*Destination = (VOID *)malloc(*DstSize);\r
- if (Scratch != NULL && *Destination != NULL) {\r
- Status = EfiDecompress(Source, SrcSize, *Destination, *DstSize, Scratch, ScratchSize);\r
- } else {\r
- Status = EFI_OUT_OF_RESOURCES;\r
+ if (*Destination == NULL) {\r
+ free (Scratch);\r
+ return EFI_OUT_OF_RESOURCES;\r
}\r
+\r
+ Status = EfiDecompress(Source, SrcSize, *Destination, *DstSize, Scratch, ScratchSize);\r
}\r
break;\r
case 2:\r
Status = TianoGetInfo(Source, SrcSize, DstSize, &ScratchSize);\r
if (Status == EFI_SUCCESS) {\r
Scratch = (VOID *)malloc(ScratchSize);\r
+ if (Scratch == NULL) {\r
+ return EFI_OUT_OF_RESOURCES;\r
+ }\r
+\r
*Destination = (VOID *)malloc(*DstSize);\r
- if (Scratch != NULL && *Destination != NULL) {\r
- Status = TianoDecompress(Source, SrcSize, *Destination, *DstSize, Scratch, ScratchSize);\r
- } else {\r
- Status = EFI_OUT_OF_RESOURCES;\r
+ if (*Destination == NULL) {\r
+ free (Scratch);\r
+ return EFI_OUT_OF_RESOURCES;\r
}\r
+\r
+ Status = TianoDecompress(Source, SrcSize, *Destination, *DstSize, Scratch, ScratchSize);\r
}\r
break;\r
default:\r
Status = EFI_INVALID_PARAMETER;\r
}\r
\r
+ if (Scratch != NULL) {\r
+ free (Scratch);\r
+ }\r
+\r
return Status;\r
}\r
\r