Fix some logic in port management code.
Modified: trunk/reactos/drivers/lib/ip/network/ports.c
_____
Modified: trunk/reactos/drivers/lib/ip/network/ports.c
--- trunk/reactos/drivers/lib/ip/network/ports.c 2005-03-16
20:36:02 UTC (rev 14142)
+++ trunk/reactos/drivers/lib/ip/network/ports.c 2005-03-16
21:03:51 UTC (rev 14143)
@@ -20,8 +20,7 @@
RtlInitializeBitMap( &PortSet->ProtoBitmap,
PortSet->ProtoBitBuffer,
PortSet->PortsToOversee );
- RtlClearBits( &PortSet->ProtoBitmap,
- PortSet->StartingPort, PortsToManage );
+ RtlClearAllBits( &PortSet->ProtoBitmap );
ExInitializeFastMutex( &PortSet->Mutex );
}
@@ -31,14 +30,16 @@
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 );