From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 6D14180472 for ; Mon, 20 Mar 2017 20:43:16 -0700 (PDT) Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga105.jf.intel.com with ESMTP; 20 Mar 2017 20:43:16 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.36,197,1486454400"; d="scan'208";a="78788731" Received: from jiaxinwu-mobl2.ccr.corp.intel.com ([10.239.196.110]) by fmsmga005.fm.intel.com with ESMTP; 20 Mar 2017 20:43:14 -0700 From: Jiaxin Wu To: edk2-devel@lists.01.org Cc: Hegde Nagaraj P , Subramanian Sriram , Zhang Lubo , Ye Ting , Fu Siyuan , Wu Jiaxin Date: Tue, 21 Mar 2017 11:43:10 +0800 Message-Id: <1490067790-68936-3-git-send-email-jiaxin.wu@intel.com> X-Mailer: git-send-email 1.9.5.msysgit.1 In-Reply-To: <1490067790-68936-1-git-send-email-jiaxin.wu@intel.com> References: <1490067790-68936-1-git-send-email-jiaxin.wu@intel.com> Subject: [Patch 2/2] NetworkPkg: Fix potential ASSERT if NetIp4IsUnicast is called X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Mar 2017 03:43:16 -0000 Cc: Hegde Nagaraj P Cc: Subramanian Sriram Cc: Zhang Lubo Cc: Ye Ting Cc: Fu Siyuan Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Wu Jiaxin --- NetworkPkg/DnsDxe/DnsProtocol.c | 4 ++-- NetworkPkg/TcpDxe/TcpMain.c | 5 +++-- NetworkPkg/UefiPxeBcDxe/PxeBcImpl.c | 5 +++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/NetworkPkg/DnsDxe/DnsProtocol.c b/NetworkPkg/DnsDxe/DnsProtocol.c index 6d117b2..0e7ed34 100644 --- a/NetworkPkg/DnsDxe/DnsProtocol.c +++ b/NetworkPkg/DnsDxe/DnsProtocol.c @@ -1,9 +1,9 @@ /** @file Implementation of EFI_DNS4_PROTOCOL and EFI_DNS6_PROTOCOL interfaces. -Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.
+Copyright (c) 2015 - 2017, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at http://opensource.org/licenses/bsd-license.php @@ -244,11 +244,11 @@ Dns4Configure ( Ip = NTOHL (Ip); Netmask = NTOHL (Netmask); if (!DnsConfigData->UseDefaultSetting && - ((!IP4_IS_VALID_NETMASK (Netmask) || !NetIp4IsUnicast (Ip, Netmask)))) { + ((!IP4_IS_VALID_NETMASK (Netmask) || (Netmask != 0 && !NetIp4IsUnicast (Ip, Netmask))))) { Status = EFI_INVALID_PARAMETER; goto ON_EXIT; } Status = Dns4CopyConfigure (&Instance->Dns4CfgData, DnsConfigData); diff --git a/NetworkPkg/TcpDxe/TcpMain.c b/NetworkPkg/TcpDxe/TcpMain.c index 03942ee..fc3713e 100644 --- a/NetworkPkg/TcpDxe/TcpMain.c +++ b/NetworkPkg/TcpDxe/TcpMain.c @@ -1,10 +1,10 @@ /** @file Implementation of EFI_TCP4_PROTOCOL and EFI_TCP6_PROTOCOL. (C) Copyright 2014 Hewlett-Packard Development Company, L.P.
- Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.
+ Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at http://opensource.org/licenses/bsd-license.php. @@ -157,11 +157,12 @@ Tcp4Configure ( if (!TcpConfigData->AccessPoint.UseDefaultAddress) { CopyMem (&Ip, &TcpConfigData->AccessPoint.StationAddress, sizeof (IP4_ADDR)); CopyMem (&SubnetMask, &TcpConfigData->AccessPoint.SubnetMask, sizeof (IP4_ADDR)); - if (!IP4_IS_VALID_NETMASK (NTOHL (SubnetMask)) || !NetIp4IsUnicast (NTOHL (Ip), NTOHL (SubnetMask))) { + if (!IP4_IS_VALID_NETMASK (NTOHL (SubnetMask)) || + (SubnetMask != 0 && !NetIp4IsUnicast (NTOHL (Ip), NTOHL (SubnetMask)))) { return EFI_INVALID_PARAMETER; } } Option = TcpConfigData->ControlOption; diff --git a/NetworkPkg/UefiPxeBcDxe/PxeBcImpl.c b/NetworkPkg/UefiPxeBcDxe/PxeBcImpl.c index 36477e9..ab9e494 100644 --- a/NetworkPkg/UefiPxeBcDxe/PxeBcImpl.c +++ b/NetworkPkg/UefiPxeBcDxe/PxeBcImpl.c @@ -1083,11 +1083,12 @@ EfiPxeBcUdpWrite ( DoNotFragment = FALSE; } else { DoNotFragment = TRUE; } - if (!Mode->UsingIpv6 && GatewayIp != NULL && !NetIp4IsUnicast (NTOHL (GatewayIp->Addr[0]), EFI_NTOHL(Mode->SubnetMask))) { + if (!Mode->UsingIpv6 && GatewayIp != NULL && Mode->SubnetMask.Addr[0] != 0 && + !NetIp4IsUnicast (NTOHL (GatewayIp->Addr[0]), EFI_NTOHL(Mode->SubnetMask))) { // // Gateway is provided but it's not a unicast IPv4 address, while it will be ignored for IPv6. // return EFI_INVALID_PARAMETER; } @@ -2014,11 +2015,11 @@ EfiPxeBcSetStationIP ( } if (!Mode->UsingIpv6 && NewStationIp != NULL) { if (IP4_IS_UNSPECIFIED(NTOHL (NewStationIp->Addr[0])) || IP4_IS_LOCAL_BROADCAST(NTOHL (NewStationIp->Addr[0])) || - (NewSubnetMask != NULL && !NetIp4IsUnicast (NTOHL (NewStationIp->Addr[0]), NTOHL (NewSubnetMask->Addr[0])))) { + (NewSubnetMask != NULL && NewSubnetMask->Addr[0] != 0 && !NetIp4IsUnicast (NTOHL (NewStationIp->Addr[0]), NTOHL (NewSubnetMask->Addr[0])))) { return EFI_INVALID_PARAMETER; } } if (!Mode->Started) { -- 1.9.5.msysgit.1