{\r
CHAR8 *PortString;\r
EFI_STATUS Status;\r
+ UINTN Index;\r
UINTN Data;\r
UINT32 ResultLength;\r
HTTP_URL_PARSER *Parser;\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
+ *Port = 0;\r
+ Index = 0;\r
+\r
Parser = (HTTP_URL_PARSER*) UrlParser;\r
\r
if ((Parser->FieldBitMap & BIT (HTTP_URI_FIELD_PORT)) == 0) {\r
\r
PortString[ResultLength] = '\0';\r
\r
+ while (Index < ResultLength) {\r
+ if (!NET_IS_DIGIT (PortString[Index])) {\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+ Index ++;\r
+ }\r
+\r
Status = AsciiStrDecimalToUintnS (Url + Parser->FieldData[HTTP_URI_FIELD_PORT].Offset, (CHAR8 **) NULL, &Data);\r
\r
+ if (Data > HTTP_URI_PORT_MAX_NUM || Data < HTTP_URI_PORT_MIN_NUM) {\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+\r
*Port = (UINT16) Data;\r
return Status;\r
}\r
/** @file\r
Header file for HttpLib.\r
\r
- Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2016 - 2017, Intel Corporation. All rights reserved.<BR>\r
(C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>\r
\r
This program and the accompanying materials\r
#define HTTP_URI_FIELD_PORT 7\r
#define HTTP_URI_FIELD_MAX 8\r
\r
+#define HTTP_URI_PORT_MIN_NUM 0\r
+#define HTTP_URI_PORT_MAX_NUM 65535\r
+\r
//\r
// Structure to store the parse result of a HTTP URL.\r
//\r