From a84ca6d5c646378a5c7bb325ed22b8f1ea289c4b Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Wed, 3 Sep 2008 00:32:07 +0000 Subject: [PATCH] - Merge aicom-network-fixes up to r35899 svn path=/trunk/; revision=35901 --- reactos/lib/drivers/ip/network/arp.c | 2 ++ reactos/lib/drivers/ip/transport/rawip/rawip.c | 7 +++++++ reactos/lib/drivers/ip/transport/tcp/if.c | 2 +- reactos/lib/drivers/ip/transport/udp/udp.c | 2 ++ 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/reactos/lib/drivers/ip/network/arp.c b/reactos/lib/drivers/ip/network/arp.c index 1ac2d5baaef..5c830589ca8 100644 --- a/reactos/lib/drivers/ip/network/arp.c +++ b/reactos/lib/drivers/ip/network/arp.c @@ -150,6 +150,8 @@ BOOLEAN ARPTransmit(PIP_ADDRESS Address, PIP_INTERFACE Interface) &Address->Address, /* Target's (remote) protocol address */ ARP_OPCODE_REQUEST); /* ARP request */ + if( !NdisPacket ) return FALSE; + ASSERT_KM_POINTER(NdisPacket); ASSERT_KM_POINTER(PC(NdisPacket)); PC(NdisPacket)->DLComplete = ARPTransmitComplete; diff --git a/reactos/lib/drivers/ip/transport/rawip/rawip.c b/reactos/lib/drivers/ip/transport/rawip/rawip.c index 5422b17d131..90f0ac7b775 100644 --- a/reactos/lib/drivers/ip/transport/rawip/rawip.c +++ b/reactos/lib/drivers/ip/transport/rawip/rawip.c @@ -143,6 +143,13 @@ NTSTATUS BuildRawIpPacket( break; } + if( !NT_SUCCESS(Status) ) { + TI_DbgPrint(MIN_TRACE, ("Cannot add header. Status = (0x%X)\n", + Status)); + FreeNdisPacket(Packet->NdisPacket); + return Status; + } + TI_DbgPrint(MID_TRACE, ("Copying data (hdr %x data %x (%d))\n", Packet->Header, Packet->Data, (PCHAR)Packet->Data - (PCHAR)Packet->Header)); diff --git a/reactos/lib/drivers/ip/transport/tcp/if.c b/reactos/lib/drivers/ip/transport/tcp/if.c index 9821d367dfe..225215e31f7 100644 --- a/reactos/lib/drivers/ip/transport/tcp/if.c +++ b/reactos/lib/drivers/ip/transport/tcp/if.c @@ -34,9 +34,9 @@ PVOID TCPPrepareInterface( PIP_INTERFACE IF ) { NTSTATUS Status; POSK_IFADDR ifaddr = exAllocatePool ( NonPagedPool, sizeof(*ifaddr) + 2 * sizeof( struct sockaddr_in ) ); + if( !ifaddr ) return NULL; struct sockaddr_in *addr_in = (struct sockaddr_in *)&ifaddr[1]; struct sockaddr_in *dstaddr_in = (struct sockaddr_in *)&addr_in[1]; - if( !ifaddr ) return NULL; TI_DbgPrint(DEBUG_TCPIF,("Called\n")); diff --git a/reactos/lib/drivers/ip/transport/udp/udp.c b/reactos/lib/drivers/ip/transport/udp/udp.c index 07561d44036..1dba3035179 100644 --- a/reactos/lib/drivers/ip/transport/udp/udp.c +++ b/reactos/lib/drivers/ip/transport/udp/udp.c @@ -330,6 +330,8 @@ NTSTATUS UDPShutdown( /* Deregister this protocol with IP layer */ IPRegisterProtocol(IPPROTO_UDP, NULL); + UDPInitialized = FALSE; + return STATUS_SUCCESS; }