mirror of
https://github.com/reactos/reactos.git
synced 2025-07-15 15:44:02 +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
|
@ -638,13 +638,15 @@ BOOLEAN ReadIpConfiguration(PIP_INTERFACE Interface)
|
||||||
{
|
{
|
||||||
RegistryDataU.Length = KeyValueInfo->DataLength;
|
RegistryDataU.Length = KeyValueInfo->DataLength;
|
||||||
|
|
||||||
RtlUnicodeStringToAnsiString(&RegistryDataA,
|
Status = RtlUnicodeStringToAnsiString(&RegistryDataA,
|
||||||
&RegistryDataU,
|
&RegistryDataU,
|
||||||
TRUE);
|
TRUE);
|
||||||
|
if (NT_SUCCESS(Status))
|
||||||
AddrInitIPv4(&Interface->Unicast, inet_addr(RegistryDataA.Buffer));
|
{
|
||||||
|
AddrInitIPv4(&Interface->Unicast,
|
||||||
RtlFreeAnsiString(&RegistryDataA);
|
inet_addr(RegistryDataA.Buffer));
|
||||||
|
RtlFreeAnsiString(&RegistryDataA);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Status = ZwQueryValueKey(ParameterHandle,
|
Status = ZwQueryValueKey(ParameterHandle,
|
||||||
|
@ -657,13 +659,15 @@ BOOLEAN ReadIpConfiguration(PIP_INTERFACE Interface)
|
||||||
{
|
{
|
||||||
RegistryDataU.Length = KeyValueInfo->DataLength;
|
RegistryDataU.Length = KeyValueInfo->DataLength;
|
||||||
|
|
||||||
RtlUnicodeStringToAnsiString(&RegistryDataA,
|
Status = RtlUnicodeStringToAnsiString(&RegistryDataA,
|
||||||
&RegistryDataU,
|
&RegistryDataU,
|
||||||
TRUE);
|
TRUE);
|
||||||
|
if (NT_SUCCESS(Status))
|
||||||
AddrInitIPv4(&Interface->Netmask, inet_addr(RegistryDataA.Buffer));
|
{
|
||||||
|
AddrInitIPv4(&Interface->Netmask,
|
||||||
RtlFreeAnsiString(&RegistryDataA);
|
inet_addr(RegistryDataA.Buffer));
|
||||||
|
RtlFreeAnsiString(&RegistryDataA);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We have to wait until both IP address and subnet mask
|
/* We have to wait until both IP address and subnet mask
|
||||||
|
@ -684,16 +688,18 @@ BOOLEAN ReadIpConfiguration(PIP_INTERFACE Interface)
|
||||||
{
|
{
|
||||||
RegistryDataU.Length = KeyValueInfo->DataLength;
|
RegistryDataU.Length = KeyValueInfo->DataLength;
|
||||||
|
|
||||||
RtlUnicodeStringToAnsiString(&RegistryDataA,
|
Status = RtlUnicodeStringToAnsiString(&RegistryDataA,
|
||||||
&RegistryDataU,
|
&RegistryDataU,
|
||||||
TRUE);
|
TRUE);
|
||||||
|
if (NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
AddrInitIPv4(&Router, inet_addr(RegistryDataA.Buffer));
|
||||||
|
|
||||||
AddrInitIPv4(&Router, inet_addr(RegistryDataA.Buffer));
|
if (!AddrIsUnspecified(&Router))
|
||||||
|
RouterCreateRoute(&DefaultMask, &DefaultMask, &Router, Interface, 1);
|
||||||
|
|
||||||
if (!AddrIsUnspecified(&Router))
|
RtlFreeAnsiString(&RegistryDataA);
|
||||||
RouterCreateRoute(&DefaultMask, &DefaultMask, &Router, Interface, 1);
|
}
|
||||||
|
|
||||||
RtlFreeAnsiString(&RegistryDataA);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue