https://git.reactos.org/?p=reactos.git;a=commitdiff;h=d87786bf6cb718510aefff...
commit d87786bf6cb718510aefffc20b10322d60c06ea1 Author: Thomas Faber thomas.faber@reactos.org 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; }