\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
//\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
}\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
}\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
}\r
DnsModeData->DnsCacheList = CacheList;\r
\r
+ON_EXIT:\r
gBS->RestoreTPL (OldTpl);\r
- \r
- return EFI_SUCCESS;\r
+ return Status;\r
}\r
\r
/**\r
\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
//\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
}\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
}\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
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