From df642d70e3966c5265e8992d63e39309ab25db7b Mon Sep 17 00:00:00 2001 From: Paulo Alcantara Date: Mon, 22 May 2017 19:52:11 +0800 Subject: [PATCH] MdeModulePkg: Fix potential memory leaks in DxeHttpLib. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Paulo Alcantara Reviewed-by: Wu Jiaxin Reviewed-by: Fu Siyuan --- MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.c b/MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.c index 8421caaa70..292923875f 100644 --- a/MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.c +++ b/MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.c @@ -523,6 +523,7 @@ HttpUrlGetHostName ( &ResultLength ); if (EFI_ERROR (Status)) { + FreePool (Name); return Status; } @@ -582,6 +583,7 @@ HttpUrlGetIp4 ( &ResultLength ); if (EFI_ERROR (Status)) { + FreePool (Ip4String); return Status; } @@ -657,6 +659,7 @@ HttpUrlGetIp6 ( &ResultLength ); if (EFI_ERROR (Status)) { + FreePool (Ip6String); return Status; } @@ -722,14 +725,15 @@ HttpUrlGetPort ( &ResultLength ); if (EFI_ERROR (Status)) { - return Status; + goto ON_EXIT; } PortString[ResultLength] = '\0'; while (Index < ResultLength) { if (!NET_IS_DIGIT (PortString[Index])) { - return EFI_INVALID_PARAMETER; + Status = EFI_INVALID_PARAMETER; + goto ON_EXIT; } Index ++; } @@ -737,10 +741,14 @@ HttpUrlGetPort ( Status = AsciiStrDecimalToUintnS (Url + Parser->FieldData[HTTP_URI_FIELD_PORT].Offset, (CHAR8 **) NULL, &Data); if (Data > HTTP_URI_PORT_MAX_NUM) { - return EFI_INVALID_PARAMETER; + Status = EFI_INVALID_PARAMETER; + goto ON_EXIT; } *Port = (UINT16) Data; + +ON_EXIT: + FreePool (PortString); return Status; } @@ -795,6 +803,7 @@ HttpUrlGetPath ( &ResultLength ); if (EFI_ERROR (Status)) { + FreePool (PathStr); return Status; } -- 2.39.5