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; }