]> git.proxmox.com Git - mirror_edk2.git/blobdiff - NetworkPkg/DnsDxe/DnsProtocol.c
NetworkPkg: Replace ASSERT with error handling in DnsDxe
[mirror_edk2.git] / NetworkPkg / DnsDxe / DnsProtocol.c
index e9101d664430be253d5b0e8c05c6997d0c6e1a35..64fca6a55bf50cc56a2f4a61deb77c37170fa79b 100644 (file)
@@ -88,8 +88,8 @@ Dns4GetModeData (
     \r
   Instance = DNS_INSTANCE_FROM_THIS_PROTOCOL4 (This);\r
   if (Instance->State == DNS_STATE_UNCONFIGED) {\r
-    gBS->RestoreTPL (OldTpl);\r
-    return  EFI_NOT_STARTED;\r
+    Status = EFI_NOT_STARTED;\r
+    goto ON_EXIT;\r
   }\r
   \r
   ZeroMem (DnsModeData, sizeof (EFI_DNS4_MODE_DATA));\r
@@ -99,8 +99,7 @@ Dns4GetModeData (
   //\r
   Status = Dns4CopyConfigure (&DnsModeData->DnsConfigData, &Instance->Dns4CfgData);\r
   if (EFI_ERROR (Status)) {\r
-    gBS->RestoreTPL (OldTpl);\r
-    return Status;\r
+    goto ON_EXIT;\r
   }\r
 \r
   //\r
@@ -112,7 +111,12 @@ Dns4GetModeData (
   }\r
   DnsModeData->DnsServerCount = (UINT32) Index;\r
   ServerList = AllocatePool (sizeof (EFI_IPv4_ADDRESS) * DnsModeData->DnsServerCount);\r
-  ASSERT (ServerList != NULL);\r
+  if (ServerList == NULL) {\r
+    Status = EFI_OUT_OF_RESOURCES;\r
+    Dns4CleanConfigure (&DnsModeData->DnsConfigData);\r
+    goto ON_EXIT;\r
+  }\r
+  \r
   Index = 0;\r
   NET_LIST_FOR_EACH_SAFE (Entry, Next, &mDriverData->Dns4ServerList) {\r
     ServerItem = NET_LIST_USER_STRUCT (Entry, DNS4_SERVER_IP, AllServerLink);\r
@@ -130,7 +134,13 @@ Dns4GetModeData (
   }\r
   DnsModeData->DnsCacheCount = (UINT32) Index;\r
   CacheList = AllocatePool (sizeof (EFI_DNS4_CACHE_ENTRY) * DnsModeData->DnsCacheCount);\r
-  ASSERT (CacheList != NULL);\r
+  if (CacheList == NULL) {\r
+    Status = EFI_OUT_OF_RESOURCES;\r
+    Dns4CleanConfigure (&DnsModeData->DnsConfigData);\r
+    FreePool (ServerList);\r
+    goto ON_EXIT;\r
+  }\r
+  \r
   Index =0;\r
   NET_LIST_FOR_EACH_SAFE (Entry, Next, &mDriverData->Dns4CacheList) {\r
     CacheItem = NET_LIST_USER_STRUCT (Entry, DNS4_CACHE, AllCacheLink);\r
@@ -139,9 +149,9 @@ Dns4GetModeData (
   }\r
   DnsModeData->DnsCacheList = CacheList;\r
 \r
+ON_EXIT:\r
   gBS->RestoreTPL (OldTpl);\r
-  \r
-  return EFI_SUCCESS;\r
+  return Status;\r
 }\r
 \r
 /**\r
@@ -909,8 +919,8 @@ Dns6GetModeData (
     \r
   Instance  = DNS_INSTANCE_FROM_THIS_PROTOCOL6 (This);\r
   if (Instance->State == DNS_STATE_UNCONFIGED) {\r
-    gBS->RestoreTPL (OldTpl);\r
-    return  EFI_NOT_STARTED;\r
+    Status =  EFI_NOT_STARTED;\r
+    goto ON_EXIT;\r
   }\r
 \r
   ZeroMem (DnsModeData, sizeof (EFI_DNS6_MODE_DATA));\r
@@ -918,10 +928,9 @@ Dns6GetModeData (
   //\r
   // Get the current configuration data of this instance. \r
   //\r
-  Status = Dns6CopyConfigure(&DnsModeData->DnsConfigData, &Instance->Dns6CfgData);\r
+  Status = Dns6CopyConfigure (&DnsModeData->DnsConfigData, &Instance->Dns6CfgData);\r
   if (EFI_ERROR (Status)) {\r
-    gBS->RestoreTPL (OldTpl);\r
-    return Status;\r
+    goto ON_EXIT;\r
   }\r
   \r
   //\r
@@ -933,7 +942,12 @@ Dns6GetModeData (
   }\r
   DnsModeData->DnsServerCount = (UINT32) Index;\r
   ServerList = AllocatePool (sizeof(EFI_IPv6_ADDRESS) * DnsModeData->DnsServerCount);\r
-  ASSERT (ServerList != NULL);\r
+  if (ServerList == NULL) {\r
+    Status = EFI_OUT_OF_RESOURCES;\r
+    Dns6CleanConfigure (&DnsModeData->DnsConfigData);\r
+    goto ON_EXIT;\r
+  }\r
+  \r
   Index = 0;\r
   NET_LIST_FOR_EACH_SAFE (Entry, Next, &mDriverData->Dns6ServerList) {\r
     ServerItem = NET_LIST_USER_STRUCT (Entry, DNS6_SERVER_IP, AllServerLink);\r
@@ -951,7 +965,13 @@ Dns6GetModeData (
   }\r
   DnsModeData->DnsCacheCount = (UINT32) Index;\r
   CacheList = AllocatePool (sizeof(EFI_DNS6_CACHE_ENTRY) * DnsModeData->DnsCacheCount);\r
-  ASSERT (CacheList != NULL);\r
+  if (CacheList == NULL) {\r
+    Status = EFI_OUT_OF_RESOURCES;\r
+    Dns6CleanConfigure (&DnsModeData->DnsConfigData);\r
+    FreePool (ServerList);\r
+    goto ON_EXIT;\r
+  }\r
+  \r
   Index =0;\r
   NET_LIST_FOR_EACH_SAFE (Entry, Next, &mDriverData->Dns6CacheList) {\r
     CacheItem = NET_LIST_USER_STRUCT (Entry, DNS6_CACHE, AllCacheLink);\r
@@ -959,10 +979,10 @@ Dns6GetModeData (
     Index++;\r
   }\r
   DnsModeData->DnsCacheList = CacheList;\r
-\r
-  gBS->RestoreTPL (OldTpl);\r
   \r
-  return EFI_SUCCESS;\r
+ON_EXIT:\r
+  gBS->RestoreTPL (OldTpl);\r
+  return Status;\r
 }\r
 \r
 /**\r