From ae9026ddfa063f23ba3c7c57e3d5d6c9e0de8220 Mon Sep 17 00:00:00 2001 From: "Bi, Dandan" Date: Tue, 5 Jul 2016 11:19:22 +0800 Subject: MdeModulePkg/UefiHiiLib: Add error handling codes when AllocatePool fail Cc: Eric Dong Cc: Hao Wu Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Dandan Bi Reviewed-by: Hao Wu --- MdeModulePkg/Library/UefiHiiLib/HiiLib.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'MdeModulePkg') diff --git a/MdeModulePkg/Library/UefiHiiLib/HiiLib.c b/MdeModulePkg/Library/UefiHiiLib/HiiLib.c index 74ccd02117..afd9985654 100644 --- a/MdeModulePkg/Library/UefiHiiLib/HiiLib.c +++ b/MdeModulePkg/Library/UefiHiiLib/HiiLib.c @@ -1,7 +1,7 @@ /** @file HII Library implementation that uses DXE protocols and services. - Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.
+ Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
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 @@ -465,10 +465,19 @@ HiiGetFormSetFromHiiHandle( if (FormSetBuffer != NULL){ TempBuffer = AllocateCopyPool (TempSize + ((EFI_IFR_OP_HEADER *) OpCodeData)->Length, FormSetBuffer); - CopyMem (TempBuffer + TempSize, OpCodeData, ((EFI_IFR_OP_HEADER *) OpCodeData)->Length); FreePool(FormSetBuffer); + FormSetBuffer = NULL; + if (TempBuffer == NULL) { + Status = EFI_OUT_OF_RESOURCES; + goto Done; + } + CopyMem (TempBuffer + TempSize, OpCodeData, ((EFI_IFR_OP_HEADER *) OpCodeData)->Length); } else { TempBuffer = AllocateCopyPool (TempSize + ((EFI_IFR_OP_HEADER *) OpCodeData)->Length, OpCodeData); + if (TempBuffer == NULL) { + Status = EFI_OUT_OF_RESOURCES; + goto Done; + } } TempSize += ((EFI_IFR_OP_HEADER *) OpCodeData)->Length; FormSetBuffer = TempBuffer; @@ -480,6 +489,7 @@ HiiGetFormSetFromHiiHandle( break; } } +Done: FreePool (HiiPackageList); *BufferSize = TempSize; -- cgit v1.2.3