https://git.reactos.org/?p=reactos.git;a=commitdiff;h=d87786bf6cb718510aefffc20b10322d60c06ea1

commit d87786bf6cb718510aefffc20b10322d60c06ea1
Author: Thomas Faber <[email protected]>
AuthorDate: Mon Jan 8 13:51:04 2018 +0100

    [TCPIP] Check for allocation failures in ReadIpConfiguration. CID 1411924
---
 drivers/network/tcpip/datalink/lan.c | 66 ++++++++++++++++++++----------------
 1 file changed, 36 insertions(+), 30 deletions(-)

diff --git a/drivers/network/tcpip/datalink/lan.c 
b/drivers/network/tcpip/datalink/lan.c
index 01b36a08cc..23ffbbab46 100644
--- a/drivers/network/tcpip/datalink/lan.c
+++ b/drivers/network/tcpip/datalink/lan.c
@@ -637,14 +637,16 @@ BOOLEAN ReadIpConfiguration(PIP_INTERFACE Interface)
             if (NT_SUCCESS(Status))
             {
                 RegistryDataU.Length = KeyValueInfo->DataLength;
-                
-                RtlUnicodeStringToAnsiString(&RegistryDataA,
-                                             &RegistryDataU,
-                                             TRUE);
-                
-                AddrInitIPv4(&Interface->Unicast, 
inet_addr(RegistryDataA.Buffer));
-                
-                RtlFreeAnsiString(&RegistryDataA);
+
+                Status = RtlUnicodeStringToAnsiString(&RegistryDataA,
+                                                      &RegistryDataU,
+                                                      TRUE);
+                if (NT_SUCCESS(Status))
+                {
+                    AddrInitIPv4(&Interface->Unicast,
+                                 inet_addr(RegistryDataA.Buffer));
+                    RtlFreeAnsiString(&RegistryDataA);
+                }
             }
 
             Status = ZwQueryValueKey(ParameterHandle,
@@ -656,16 +658,18 @@ BOOLEAN ReadIpConfiguration(PIP_INTERFACE Interface)
             if (NT_SUCCESS(Status))
             {
                 RegistryDataU.Length = KeyValueInfo->DataLength;
-                
-                RtlUnicodeStringToAnsiString(&RegistryDataA,
-                                             &RegistryDataU,
-                                             TRUE);
-                
-                AddrInitIPv4(&Interface->Netmask, 
inet_addr(RegistryDataA.Buffer));
-                
-                RtlFreeAnsiString(&RegistryDataA);
+
+                Status = RtlUnicodeStringToAnsiString(&RegistryDataA,
+                                                      &RegistryDataU,
+                                                      TRUE);
+                if (NT_SUCCESS(Status))
+                {
+                    AddrInitIPv4(&Interface->Netmask,
+                                 inet_addr(RegistryDataA.Buffer));
+                    RtlFreeAnsiString(&RegistryDataA);
+                }
             }
-            
+
             /* We have to wait until both IP address and subnet mask
              * are read to add the interface route, but we must do it
              * before we add the default gateway */
@@ -683,24 +687,26 @@ BOOLEAN ReadIpConfiguration(PIP_INTERFACE Interface)
             if (NT_SUCCESS(Status))
             {
                 RegistryDataU.Length = KeyValueInfo->DataLength;
-                
-                RtlUnicodeStringToAnsiString(&RegistryDataA,
-                                             &RegistryDataU,
-                                             TRUE);
-                
-                AddrInitIPv4(&Router, inet_addr(RegistryDataA.Buffer));
-                
-                if (!AddrIsUnspecified(&Router))
-                    RouterCreateRoute(&DefaultMask, &DefaultMask, &Router, 
Interface, 1);
-                
-                RtlFreeAnsiString(&RegistryDataA);
+
+                Status = RtlUnicodeStringToAnsiString(&RegistryDataA,
+                                                      &RegistryDataU,
+                                                      TRUE);
+                if (NT_SUCCESS(Status))
+                {
+                    AddrInitIPv4(&Router, inet_addr(RegistryDataA.Buffer));
+
+                    if (!AddrIsUnspecified(&Router))
+                        RouterCreateRoute(&DefaultMask, &DefaultMask, &Router, 
Interface, 1);
+
+                    RtlFreeAnsiString(&RegistryDataA);
+                }
             }
         }
-        
+
         ExFreePoolWithTag(KeyValueInfo, KEY_VALUE_TAG);
         ZwClose(ParameterHandle);
     }
-    
+
     return TRUE;
 }
 

Reply via email to