mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 01:55:19 +00:00
[TCPIP] Check for allocation failures in ReadIpConfiguration. CID 1411924
This commit is contained in:
parent
63a3a2cbb8
commit
d87786bf6c
1 changed files with 36 additions and 30 deletions
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue