[ros-diffs] [cgutman] 37000: - Check the status of AddGenericHeaderIPv4 - Fix a leak

cgutman at svn.reactos.org cgutman at svn.reactos.org
Sun Oct 26 21:57:26 CET 2008


Author: cgutman
Date: Sun Oct 26 15:57:26 2008
New Revision: 37000

URL: http://svn.reactos.org/svn/reactos?rev=37000&view=rev
Log:
 - Check the status of AddGenericHeaderIPv4
 - Fix a leak

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

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=37000&r1=36999&r2=37000&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] Sun Oct 26 15:57:26 2008
@@ -33,15 +33,19 @@
  */
 {
     PUDP_HEADER UDPHeader;
+    NTSTATUS Status;
 
     TI_DbgPrint(MID_TRACE, ("Packet: %x NdisPacket %x\n",
 			    IPPacket, IPPacket->NdisPacket));
 
-    AddGenericHeaderIPv4
+    Status = AddGenericHeaderIPv4
         ( RemoteAddress, RemotePort,
           LocalAddress, LocalPort,
           IPPacket, DataLength, IPPROTO_UDP,
           sizeof(UDP_HEADER), (PVOID *)&UDPHeader );
+
+    if (!NT_SUCCESS(Status))
+        return Status;
 
     /* Build UDP header */
     UDPHeader = (PUDP_HEADER)((ULONG_PTR)IPPacket->Data - sizeof(UDP_HEADER));
@@ -195,8 +199,10 @@
     if( !NT_SUCCESS(Status) )
 	return Status;
 
-    if(!(NCE = RouteGetRouteToDestination( &RemoteAddress )))
+    if(!(NCE = RouteGetRouteToDestination( &RemoteAddress ))) {
+        FreeNdisPacket(Packet.NdisPacket);
 	return STATUS_UNSUCCESSFUL;
+    }
 
     IPSendDatagram( &Packet, NCE, UDPSendPacketComplete, NULL );
 



More information about the Ros-diffs mailing list