Implementation of EFI_TCP4_PROTOCOL and EFI_TCP6_PROTOCOL.\r
\r
(C) Copyright 2014 Hewlett-Packard Development Company, L.P.<BR>\r
- Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>\r
\r
- This program and the accompanying materials\r
- are licensed and made available under the terms and conditions of the BSD License\r
- which accompanies this distribution. The full text of the license may be found at\r
- http://opensource.org/licenses/bsd-license.php.\r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
UINT32 Len;\r
\r
for (Index = 0, Len = 0; Index < FragmentCount; Index++) {\r
+ if (FragmentTable[Index].FragmentBuffer == NULL) {\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
Len = Len + FragmentTable[Index].FragmentLength;\r
}\r
\r
if (NULL != TcpConfigData) {\r
\r
CopyMem (&Ip, &TcpConfigData->AccessPoint.RemoteAddress, sizeof (IP4_ADDR));\r
- if ((Ip != 0) && !NetIp4IsUnicast (NTOHL (Ip), 0)) {\r
+ if (IP4_IS_LOCAL_BROADCAST (NTOHL (Ip))) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
\r
CopyMem (&Ip, &TcpConfigData->AccessPoint.StationAddress, sizeof (IP4_ADDR));\r
CopyMem (&SubnetMask, &TcpConfigData->AccessPoint.SubnetMask, sizeof (IP4_ADDR));\r
- if (!NetIp4IsUnicast (NTOHL (Ip), 0) || !IP4_IS_VALID_NETMASK (NTOHL (SubnetMask))) {\r
+ if (!IP4_IS_VALID_NETMASK (NTOHL (SubnetMask)) ||\r
+ (SubnetMask != 0 && !NetIp4IsUnicast (NTOHL (Ip), NTOHL (SubnetMask)))) {\r
return EFI_INVALID_PARAMETER;\r
}\r
}\r