[AFD]
[reactos.git] / reactos / drivers / network / afd / afd / info.c
index 2ceff46..162f660 100644 (file)
@@ -198,6 +198,7 @@ AfdGetSockName( PDEVICE_OBJECT DeviceObject, PIRP Irp,
     PMDL Mdl = NULL;
 
     UNREFERENCED_PARAMETER(DeviceObject);
     PMDL Mdl = NULL;
 
     UNREFERENCED_PARAMETER(DeviceObject);
+    ASSERT(Irp->MdlAddress == NULL);
 
     if( !SocketAcquireStateLock( FCB ) ) return LostSocket( Irp );
 
 
     if( !SocketAcquireStateLock( FCB ) ) return LostSocket( Irp );
 
@@ -226,6 +227,11 @@ AfdGetSockName( PDEVICE_OBJECT DeviceObject, PIRP Irp,
                                               TDI_QUERY_ADDRESS_INFO,
                                               Mdl );
         }
                                               TDI_QUERY_ADDRESS_INFO,
                                               Mdl );
         }
+
+        /* Check if MmProbeAndLockPages or TdiQueryInformation failed and
+         * clean up Mdl */
+        if (!NT_SUCCESS(Status) && Irp->MdlAddress != Mdl)
+            IoFreeMdl(Mdl);
     } else
         Status = STATUS_INSUFFICIENT_RESOURCES;
 
     } else
         Status = STATUS_INSUFFICIENT_RESOURCES;