From 2d1f3dd497f343bc54b4a164d4e9f015ae04f7dc Mon Sep 17 00:00:00 2001 From: niruiyu Date: Wed, 6 Jun 2012 08:41:58 +0000 Subject: Fix memory leak issues. Signed-off-by: Ruiyu Ni Reviewed-by: Eric Dong git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13428 6f19259b-4bc3-4df7-8a09-765794883524 --- IntelFrameworkModulePkg/Library/GenericBdsLib/BdsMisc.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'IntelFrameworkModulePkg/Library') diff --git a/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsMisc.c b/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsMisc.c index 3d1ccf9dc2..a432fb24a4 100644 --- a/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsMisc.c +++ b/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsMisc.c @@ -825,6 +825,7 @@ BdsLibGetVariableAndSize ( // Buffer = AllocateZeroPool (BufferSize); if (Buffer == NULL) { + *VariableSize = 0; return NULL; } // @@ -832,10 +833,15 @@ BdsLibGetVariableAndSize ( // Status = gRT->GetVariable (Name, VendorGuid, NULL, &BufferSize, Buffer); if (EFI_ERROR (Status)) { + FreePool (Buffer); BufferSize = 0; + Buffer = NULL; } } + ASSERT (((Buffer == NULL) && (BufferSize == 0)) || + ((Buffer != NULL) && (BufferSize != 0)) + ); *VariableSize = BufferSize; return Buffer; } -- cgit v1.2.3