Author: cgutman Date: Mon Jan 12 12:04:14 2009 New Revision: 38729
URL: http://svn.reactos.org/svn/reactos?rev=38729&view=rev Log: - Don't crash if IPRemoveInterfaceRoute is called twice - Found by memtrack :)
Modified: branches/aicom-network-fixes/lib/drivers/ip/network/ip.c
Modified: branches/aicom-network-fixes/lib/drivers/ip/network/ip.c URL: http://svn.reactos.org/svn/reactos/branches/aicom-network-fixes/lib/drivers/... ============================================================================== --- branches/aicom-network-fixes/lib/drivers/ip/network/ip.c [iso-8859-1] (original) +++ branches/aicom-network-fixes/lib/drivers/ip/network/ip.c [iso-8859-1] Mon Jan 12 12:04:14 2009 @@ -309,22 +309,20 @@ PNEIGHBOR_CACHE_ENTRY NCE; IP_ADDRESS GeneralRoute;
- TCPDisposeInterfaceData( IF->TCPContext ); - IF->TCPContext = NULL; - - TI_DbgPrint(DEBUG_IP,("Removing interface Addr %s\n", A2S(&IF->Unicast))); - TI_DbgPrint(DEBUG_IP,(" Mask %s\n", A2S(&IF->Netmask))); - - AddrWidenAddress(&GeneralRoute,&IF->Unicast,&IF->Netmask); - - RouterRemoveRoute(&GeneralRoute, &IF->Unicast); - - /* Remove permanent NCE, but first we have to find it */ NCE = NBLocateNeighbor(&IF->Unicast); if (NCE) - NBRemoveNeighbor(NCE); - else - TI_DbgPrint(DEBUG_IP, ("Could not delete IF route (0x%X)\n", IF)); + { + TCPDisposeInterfaceData( IF->TCPContext ); + + TI_DbgPrint(DEBUG_IP,("Removing interface Addr %s\n", A2S(&IF->Unicast))); + TI_DbgPrint(DEBUG_IP,(" Mask %s\n", A2S(&IF->Netmask))); + + AddrWidenAddress(&GeneralRoute,&IF->Unicast,&IF->Netmask); + + RouterRemoveRoute(&GeneralRoute, &IF->Unicast); + + NBRemoveNeighbor(NCE); + } }
VOID IPUnregisterInterface(