[ros-diffs] [cgutman] 36006: - Make PortsStartup return NTSTATUS so we can make sure memory allocated succeeded - Change the callers to check the return status

cgutman at svn.reactos.org cgutman at svn.reactos.org
Sat Sep 6 23:30:10 CEST 2008


Author: cgutman
Date: Sat Sep  6 16:30:09 2008
New Revision: 36006

URL: http://svn.reactos.org/svn/reactos?rev=36006&view=rev
Log:
 - Make PortsStartup return NTSTATUS so we can make sure memory allocated succeeded
 - Change the callers to check the return status

Modified:
    branches/aicom-network-fixes/lib/drivers/ip/network/ports.c
    branches/aicom-network-fixes/lib/drivers/ip/transport/tcp/tcp.c
    branches/aicom-network-fixes/lib/drivers/ip/transport/udp/udp.c

Modified: branches/aicom-network-fixes/lib/drivers/ip/network/ports.c
URL: http://svn.reactos.org/svn/reactos/branches/aicom-network-fixes/lib/drivers/ip/network/ports.c?rev=36006&r1=36005&r2=36006&view=diff
==============================================================================
--- branches/aicom-network-fixes/lib/drivers/ip/network/ports.c [iso-8859-1] (original)
+++ branches/aicom-network-fixes/lib/drivers/ip/network/ports.c [iso-8859-1] Sat Sep  6 16:30:09 2008
@@ -10,7 +10,7 @@
 
 #include "precomp.h"
 
-VOID PortsStartup( PPORT_SET PortSet,
+NTSTATUS PortsStartup( PPORT_SET PortSet,
 		   UINT StartingPort,
 		   UINT PortsToManage ) {
     PortSet->StartingPort = StartingPort;
@@ -19,11 +19,13 @@
                                  PortSet->PortsToOversee - 1;
     PortSet->ProtoBitBuffer =
 	PoolAllocateBuffer( (PortSet->PortsToOversee + 7) / 8 );
+    if(!PortSet->ProtoBitBuffer) return STATUS_INSUFFICIENT_RESOURCES;
     RtlInitializeBitMap( &PortSet->ProtoBitmap,
 			 PortSet->ProtoBitBuffer,
 			 PortSet->PortsToOversee );
     RtlClearAllBits( &PortSet->ProtoBitmap );
     ExInitializeFastMutex( &PortSet->Mutex );
+    return STATUS_SUCCESS;
 }
 
 VOID PortsShutdown( PPORT_SET PortSet ) {

Modified: branches/aicom-network-fixes/lib/drivers/ip/transport/tcp/tcp.c
URL: http://svn.reactos.org/svn/reactos/branches/aicom-network-fixes/lib/drivers/ip/transport/tcp/tcp.c?rev=36006&r1=36005&r2=36006&view=diff
==============================================================================
--- branches/aicom-network-fixes/lib/drivers/ip/transport/tcp/tcp.c [iso-8859-1] (original)
+++ branches/aicom-network-fixes/lib/drivers/ip/transport/tcp/tcp.c [iso-8859-1] Sat Sep  6 16:30:09 2008
@@ -455,7 +455,11 @@
 	return Status;
     }
 
-    PortsStartup( &TCPPorts, 1, 0xfffe );
+    Status = PortsStartup( &TCPPorts, 1, 0xfffe );
+    if( !NT_SUCCESS(Status) ) {
+	TCPMemShutdown();
+	return Status;
+    }
 
     RegisterOskitTCPEventHandlers( &EventHandlers );
     InitOskitTCP();

Modified: branches/aicom-network-fixes/lib/drivers/ip/transport/udp/udp.c
URL: http://svn.reactos.org/svn/reactos/branches/aicom-network-fixes/lib/drivers/ip/transport/udp/udp.c?rev=36006&r1=36005&r2=36006&view=diff
==============================================================================
--- branches/aicom-network-fixes/lib/drivers/ip/transport/udp/udp.c [iso-8859-1] (original)
+++ branches/aicom-network-fixes/lib/drivers/ip/transport/udp/udp.c [iso-8859-1] Sat Sep  6 16:30:09 2008
@@ -302,8 +302,12 @@
 #ifdef __NTDRIVER__
   RtlZeroMemory(&UDPStats, sizeof(UDP_STATISTICS));
 #endif
-
-  PortsStartup( &UDPPorts, 1, 0xfffe );
+  
+  NTSTATUS Status;
+
+  Status = PortsStartup( &UDPPorts, 1, 0xfffe );
+
+  if( !NT_SUCCESS(Status) ) return Status;
 
   /* Register this protocol with IP layer */
   IPRegisterProtocol(IPPROTO_UDP, UDPReceive);



More information about the Ros-diffs mailing list