Agree. Patch v2 is ready for review.

Thanks.
Jiaxin

> -----Original Message-----
> From: Ye, Ting
> Sent: Friday, June 17, 2016 5:04 PM
> To: Wu, Jiaxin <jiaxin...@intel.com>; edk2-devel@lists.01.org
> Cc: Zhang, Lubo <lubo.zh...@intel.com>; Fu, Siyuan <siyuan...@intel.com>
> Subject: RE: [edk2] [Patch] NetworkPkg: Replace ASSERT with error handling
> in DnsDxe
> 
> Jiaxin,
> 
> Is it possible to use goto to handle the error cases instead of duplicating 
> the
> logic?
> 
> Thanks,
> Ting
> 
> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of
> Jiaxin Wu
> Sent: Friday, June 17, 2016 2:46 PM
> To: edk2-devel@lists.01.org
> Cc: Ye, Ting <ting...@intel.com>; Zhang, Lubo <lubo.zh...@intel.com>; Fu,
> Siyuan <siyuan...@intel.com>
> Subject: [edk2] [Patch] NetworkPkg: Replace ASSERT with error handling in
> DnsDxe
> 
> This patch is used to replace ASSERT with error handling in DnsDxe driver.
> 
> Cc: Ye Ting <ting...@intel.com>
> Cc: Fu Siyuan <siyuan...@intel.com>
> Cc: Zhang Lubo <lubo.zh...@intel.com>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Jiaxin Wu <jiaxin...@intel.com>
> ---
>  NetworkPkg/DnsDxe/DnsProtocol.c | 34
> ++++++++++++++++++++++++++++++----
>  1 file changed, 30 insertions(+), 4 deletions(-)
> 
> diff --git a/NetworkPkg/DnsDxe/DnsProtocol.c
> b/NetworkPkg/DnsDxe/DnsProtocol.c index e9101d6..1102fab 100644
> --- a/NetworkPkg/DnsDxe/DnsProtocol.c
> +++ b/NetworkPkg/DnsDxe/DnsProtocol.c
> @@ -110,11 +110,17 @@ Dns4GetModeData (
>    NET_LIST_FOR_EACH_SAFE (Entry, Next, &mDriverData->Dns4ServerList) {
>      Index++;
>    }
>    DnsModeData->DnsServerCount = (UINT32) Index;
>    ServerList = AllocatePool (sizeof (EFI_IPv4_ADDRESS) * DnsModeData-
> >DnsServerCount);
> -  ASSERT (ServerList != NULL);
> +  if (ServerList == NULL) {
> +    Status = EFI_OUT_OF_RESOURCES;
> +    Dns4CleanConfigure (&DnsModeData->DnsConfigData);
> +    gBS->RestoreTPL (OldTpl);
> +    return Status;
> +  }
> +
>    Index = 0;
>    NET_LIST_FOR_EACH_SAFE (Entry, Next, &mDriverData->Dns4ServerList) {
>      ServerItem = NET_LIST_USER_STRUCT (Entry, DNS4_SERVER_IP,
> AllServerLink);
>      CopyMem (ServerList + Index, &ServerItem->Dns4ServerIp, sizeof
> (EFI_IPv4_ADDRESS));
>      Index++;
> @@ -128,11 +134,18 @@ Dns4GetModeData (
>    NET_LIST_FOR_EACH_SAFE (Entry, Next, &mDriverData->Dns4CacheList) {
>      Index++;
>    }
>    DnsModeData->DnsCacheCount = (UINT32) Index;
>    CacheList = AllocatePool (sizeof (EFI_DNS4_CACHE_ENTRY) *
> DnsModeData->DnsCacheCount);
> -  ASSERT (CacheList != NULL);
> +  if (CacheList == NULL) {
> +    Status = EFI_OUT_OF_RESOURCES;
> +    Dns4CleanConfigure (&DnsModeData->DnsConfigData);
> +    FreePool (ServerList);
> +    gBS->RestoreTPL (OldTpl);
> +    return Status;
> +  }
> +
>    Index =0;
>    NET_LIST_FOR_EACH_SAFE (Entry, Next, &mDriverData->Dns4CacheList) {
>      CacheItem = NET_LIST_USER_STRUCT (Entry, DNS4_CACHE, AllCacheLink);
>      CopyMem (CacheList + Index, &CacheItem->DnsCache, sizeof
> (EFI_DNS4_CACHE_ENTRY));
>      Index++;
> @@ -931,11 +944,17 @@ Dns6GetModeData (
>    NET_LIST_FOR_EACH_SAFE (Entry, Next, &mDriverData->Dns6ServerList) {
>      Index++;
>    }
>    DnsModeData->DnsServerCount = (UINT32) Index;
>    ServerList = AllocatePool (sizeof(EFI_IPv6_ADDRESS) * DnsModeData-
> >DnsServerCount);
> -  ASSERT (ServerList != NULL);
> +  if (ServerList == NULL) {
> +    Status = EFI_OUT_OF_RESOURCES;
> +    Dns6CleanConfigure (&DnsModeData->DnsConfigData);
> +    gBS->RestoreTPL (OldTpl);
> +    return Status;
> +  }
> +
>    Index = 0;
>    NET_LIST_FOR_EACH_SAFE (Entry, Next, &mDriverData->Dns6ServerList) {
>      ServerItem = NET_LIST_USER_STRUCT (Entry, DNS6_SERVER_IP,
> AllServerLink);
>      CopyMem (ServerList + Index, &ServerItem->Dns6ServerIp, sizeof
> (EFI_IPv6_ADDRESS));
>      Index++;
> @@ -949,11 +968,18 @@ Dns6GetModeData (
>    NET_LIST_FOR_EACH_SAFE (Entry, Next, &mDriverData->Dns6CacheList) {
>      Index++;
>    }
>    DnsModeData->DnsCacheCount = (UINT32) Index;
>    CacheList = AllocatePool (sizeof(EFI_DNS6_CACHE_ENTRY) *
> DnsModeData->DnsCacheCount);
> -  ASSERT (CacheList != NULL);
> +  if (CacheList == NULL) {
> +    Status = EFI_OUT_OF_RESOURCES;
> +    Dns6CleanConfigure (&DnsModeData->DnsConfigData);
> +    FreePool (ServerList);
> +    gBS->RestoreTPL (OldTpl);
> +    return Status;
> +  }
> +
>    Index =0;
>    NET_LIST_FOR_EACH_SAFE (Entry, Next, &mDriverData->Dns6CacheList) {
>      CacheItem = NET_LIST_USER_STRUCT (Entry, DNS6_CACHE, AllCacheLink);
>      CopyMem (CacheList + Index, &CacheItem->DnsCache, sizeof
> (EFI_DNS6_CACHE_ENTRY));
>      Index++;
> --
> 1.9.5.msysgit.1
> 
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to