Fix some logic in port management code.
[reactos.git] / reactos / drivers / lib / ip / network / ports.c
index adafd86..17e65ff 100644 (file)
@@ -20,8 +20,7 @@ VOID PortsStartup( PPORT_SET PortSet,
     RtlInitializeBitMap( &PortSet->ProtoBitmap, 
                         PortSet->ProtoBitBuffer,
                         PortSet->PortsToOversee );
-    RtlClearBits( &PortSet->ProtoBitmap, 
-                  PortSet->StartingPort, PortsToManage );
+    RtlClearAllBits( &PortSet->ProtoBitmap );
     ExInitializeFastMutex( &PortSet->Mutex );
 }
 
@@ -31,14 +30,16 @@ VOID PortsShutdown( PPORT_SET PortSet ) {
 
 VOID DeallocatePort( PPORT_SET PortSet, ULONG Port ) {
     Port = htons(Port);
-    RtlClearBits( &PortSet->ProtoBitmap, 
-                 PortSet->StartingPort + Port, 1 );
+    ASSERT(Port >= PortSet->StartingPort);
+    ASSERT(Port < PortSet->StartingPort + PortSet->PortsToOversee);
+    RtlClearBits( &PortSet->ProtoBitmap, Port - PortSet->StartingPort, 1 );
 }
 
 BOOLEAN AllocatePort( PPORT_SET PortSet, ULONG Port ) {
     BOOLEAN Clear;
 
     Port = htons(Port);
+    ASSERT(Port >= PortSet->StartingPort);
     Port -= PortSet->StartingPort;
 
     ExAcquireFastMutex( &PortSet->Mutex );