From 676df92c2c0c5bdeb0f8e27349f5dd467928ce09 Mon Sep 17 00:00:00 2001 From: qwang12 Date: Thu, 30 Oct 2008 07:32:46 +0000 Subject: Remove SafeFreePool from MemoryAllocationLib as this API's name is misleading. Its implementation only check if a pointer is NULL. If a garbage pointer is passed in, the gBS->FreePool will still ASSERT in debug build and return error code. It is recommended that module writer should keep track how a pointer is allocated and free it after use. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6306 6f19259b-4bc3-4df7-8a09-765794883524 --- .../Universal/SetupBrowserDxe/Expression.c | 44 ++++++++++++---- MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c | 60 ++++++++++++++++------ .../Universal/SetupBrowserDxe/Presentation.c | 56 ++++++++++---------- MdeModulePkg/Universal/SetupBrowserDxe/Setup.c | 8 ++- MdeModulePkg/Universal/SetupBrowserDxe/Ui.c | 4 +- 5 files changed, 113 insertions(+), 59 deletions(-) (limited to 'MdeModulePkg/Universal/SetupBrowserDxe') diff --git a/MdeModulePkg/Universal/SetupBrowserDxe/Expression.c b/MdeModulePkg/Universal/SetupBrowserDxe/Expression.c index 25d4e0a678..46f70b986b 100644 --- a/MdeModulePkg/Universal/SetupBrowserDxe/Expression.c +++ b/MdeModulePkg/Universal/SetupBrowserDxe/Expression.c @@ -712,9 +712,15 @@ IfrCatenate ( Result->Value.string = NewString (StringPtr, FormSet->HiiHandle); Done: - SafeFreePool (String[0]); - SafeFreePool (String[1]); - SafeFreePool (StringPtr); + if (String[0] != NULL) { + FreePool (String[0]); + } + if (String[1] != NULL) { + FreePool (String[1]); + } + if (StringPtr != NULL) { + FreePool (StringPtr); + } return Status; } @@ -770,8 +776,12 @@ IfrMatch ( Result->Value.b = mUnicodeCollation->MetaiMatch (mUnicodeCollation, String[0], String[1]); Done: - SafeFreePool (String[0]); - SafeFreePool (String[1]); + if (String[0] != NULL) { + FreePool (String[0]); + } + if (String[1] != NULL) { + FreePool (String[1]); + } return Status; } @@ -855,8 +865,12 @@ IfrFind ( } Done: - SafeFreePool (String[0]); - SafeFreePool (String[1]); + if (String[0] != NULL) { + FreePool (String[0]); + } + if (String[1] != NULL) { + FreePool (String[1]); + } return Status; } @@ -1025,8 +1039,12 @@ IfrToken ( Result->Value.string = NewString (SubString, FormSet->HiiHandle); Done: - SafeFreePool (String[0]); - SafeFreePool (String[1]); + if (String[0] != NULL) { + FreePool (String[0]); + } + if (String[1] != NULL) { + FreePool (String[1]); + } return Status; } @@ -1129,8 +1147,12 @@ IfrSpan ( Result->Value.u64 = StringPtr - String[1]; Done: - SafeFreePool (String[0]); - SafeFreePool (String[1]); + if (String[0] != NULL) { + FreePool (String[0]); + } + if (String[1] != NULL) { + FreePool (String[1]); + } return Status; } diff --git a/MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c b/MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c index 3a9a8bc3b9..f640d12e3a 100644 --- a/MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c +++ b/MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c @@ -445,7 +445,9 @@ DestroyExpression ( OpCode = EXPRESSION_OPCODE_FROM_LINK (Link); RemoveEntryList (&OpCode->Link); - SafeFreePool (OpCode->ValueList); + if (OpCode->ValueList != NULL) { + FreePool (OpCode->ValueList); + } } // @@ -473,25 +475,41 @@ DestroyStorage ( return; } - SafeFreePool (Storage->Name); - SafeFreePool (Storage->Buffer); - SafeFreePool (Storage->EditBuffer); + if (Storage->Name != NULL) { + FreePool (Storage->Name); + } + if (Storage->Buffer != NULL) { + FreePool (Storage->Buffer); + } + if (Storage->EditBuffer != NULL) { + FreePool (Storage->EditBuffer); + } while (!IsListEmpty (&Storage->NameValueListHead)) { Link = GetFirstNode (&Storage->NameValueListHead); NameValueNode = NAME_VALUE_NODE_FROM_LINK (Link); RemoveEntryList (&NameValueNode->Link); - SafeFreePool (NameValueNode->Name); - SafeFreePool (NameValueNode->Value); - SafeFreePool (NameValueNode->EditValue); - SafeFreePool (NameValueNode); + if (NameValueNode->Name != NULL) { + FreePool (NameValueNode->Name); + } + if (NameValueNode->Value != NULL) { + FreePool (NameValueNode->Value); + } + if (NameValueNode->EditValue != NULL) { + FreePool (NameValueNode->EditValue); + } + FreePool (NameValueNode); } - SafeFreePool (Storage->ConfigHdr); - SafeFreePool (Storage->ConfigRequest); + if (Storage->ConfigHdr != NULL) { + FreePool (Storage->ConfigHdr); + } + if (Storage->ConfigRequest != NULL) { + FreePool (Storage->ConfigRequest); + } - gBS->FreePool (Storage); + FreePool (Storage); } @@ -555,8 +573,12 @@ DestroyStatement ( DestroyExpression (Expression); } - SafeFreePool (Statement->VariableName); - SafeFreePool (Statement->BlockName); + if (Statement->VariableName != NULL) { + FreePool (Statement->VariableName); + } + if (Statement->BlockName != NULL) { + FreePool (Statement->BlockName); + } } @@ -623,7 +645,7 @@ DestroyFormSet ( // // Free IFR binary buffer // - SafeFreePool (FormSet->IfrBinaryData); + FreePool (FormSet->IfrBinaryData); // // Free FormSet Storage @@ -664,10 +686,14 @@ DestroyFormSet ( } } - SafeFreePool (FormSet->StatementBuffer); - SafeFreePool (FormSet->ExpressionBuffer); + if (FormSet->StatementBuffer != NULL) { + FreePool (FormSet->StatementBuffer); + } + if (FormSet->ExpressionBuffer != NULL) { + FreePool (FormSet->ExpressionBuffer); + } - SafeFreePool (FormSet); + FreePool (FormSet); } diff --git a/MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c b/MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c index 404bb31e10..ba6927c719 100644 --- a/MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c +++ b/MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c @@ -611,34 +611,34 @@ FreeBrowserStrings ( VOID ) { - SafeFreePool (gFunctionOneString); - SafeFreePool (gFunctionTwoString); - SafeFreePool (gFunctionNineString); - SafeFreePool (gFunctionTenString); - SafeFreePool (gEnterString); - SafeFreePool (gEnterCommitString); - SafeFreePool (gEscapeString); - SafeFreePool (gMoveHighlight); - SafeFreePool (gMakeSelection); - SafeFreePool (gDecNumericInput); - SafeFreePool (gHexNumericInput); - SafeFreePool (gToggleCheckBox); - SafeFreePool (gPromptForData); - SafeFreePool (gPromptForPassword); - SafeFreePool (gPromptForNewPassword); - SafeFreePool (gConfirmPassword); - SafeFreePool (gPassowordInvalid); - SafeFreePool (gConfirmError); - SafeFreePool (gPressEnter); - SafeFreePool (gEmptyString); - SafeFreePool (gAreYouSure); - SafeFreePool (gYesResponse); - SafeFreePool (gNoResponse); - SafeFreePool (gMiniString); - SafeFreePool (gPlusString); - SafeFreePool (gMinusString); - SafeFreePool (gAdjustNumber); - SafeFreePool (gSaveChanges); + FreePool (gFunctionOneString); + FreePool (gFunctionTwoString); + FreePool (gFunctionNineString); + FreePool (gFunctionTenString); + FreePool (gEnterString); + FreePool (gEnterCommitString); + FreePool (gEscapeString); + FreePool (gMoveHighlight); + FreePool (gMakeSelection); + FreePool (gDecNumericInput); + FreePool (gHexNumericInput); + FreePool (gToggleCheckBox); + FreePool (gPromptForData); + FreePool (gPromptForPassword); + FreePool (gPromptForNewPassword); + FreePool (gConfirmPassword); + FreePool (gPassowordInvalid); + FreePool (gConfirmError); + FreePool (gPressEnter); + FreePool (gEmptyString); + FreePool (gAreYouSure); + FreePool (gYesResponse); + FreePool (gNoResponse); + FreePool (gMiniString); + FreePool (gPlusString); + FreePool (gMinusString); + FreePool (gAdjustNumber); + FreePool (gSaveChanges); return ; } diff --git a/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c b/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c index f728d53910..29b606fdef 100644 --- a/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c +++ b/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c @@ -724,7 +724,9 @@ NewStringCpy ( IN CHAR16 *Src ) { - SafeFreePool (*Dest); + if (*Dest != NULL) { + FreePool (*Dest); + } *Dest = AllocateCopyPool (StrSize (Src), Src); ASSERT (*Dest != NULL); } @@ -865,7 +867,9 @@ SetValueByName ( Node = NAME_VALUE_NODE_FROM_LINK (Link); if (StrCmp (Name, Node->Name) == 0) { - SafeFreePool (Node->EditValue); + if (Node->EditValue != NULL) { + FreePool (Node->EditValue); + } Node->EditValue = AllocateCopyPool (StrSize (Value), Value); ASSERT (Node->EditValue != NULL); return EFI_SUCCESS; diff --git a/MdeModulePkg/Universal/SetupBrowserDxe/Ui.c b/MdeModulePkg/Universal/SetupBrowserDxe/Ui.c index 8421ad9777..390d551386 100644 --- a/MdeModulePkg/Universal/SetupBrowserDxe/Ui.c +++ b/MdeModulePkg/Universal/SetupBrowserDxe/Ui.c @@ -2137,7 +2137,9 @@ UiDisplayMenu ( gDirection = SCAN_LEFT; } Status = ProcessOptions (Selection, MenuOption, TRUE, &OptionString); - SafeFreePool (OptionString); + if (OptionString != NULL) { + FreePool (OptionString); + } } break; -- cgit v1.2.3