[ros-diffs] [janderwald] 41835: - Fix a bug which was responsible for most audio-related crashes - Found by DosX (Gregor Schneider) - Fix memory leak See issue #4674 for more details.

janderwald at svn.reactos.org janderwald at svn.reactos.org
Thu Jul 9 23:49:05 CEST 2009


Author: janderwald
Date: Fri Jul 10 01:49:04 2009
New Revision: 41835

URL: http://svn.reactos.org/svn/reactos?rev=41835&view=rev
Log:
- Fix a bug which was responsible for most audio-related crashes
- Found by DosX (Gregor Schneider)
- Fix memory leak

See issue #4674 for more details.

Modified:
    trunk/reactos/drivers/ksfilter/ks/topology.c
    trunk/reactos/drivers/wdm/audio/sysaudio/control.c

Modified: trunk/reactos/drivers/ksfilter/ks/topology.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/ksfilter/ks/topology.c?rev=41835&r1=41834&r2=41835&view=diff
==============================================================================
--- trunk/reactos/drivers/ksfilter/ks/topology.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/ksfilter/ks/topology.c [iso-8859-1] Fri Jul 10 01:49:04 2009
@@ -19,7 +19,7 @@
     OBJECT_ATTRIBUTES ObjectAttributes;
     UNICODE_STRING Name;
 
-    Name.Length = (wcslen(ObjectType) + 1) * sizeof(WCHAR) + CreateParametersSize;
+    Name.Length = Name.MaximumLength = (wcslen(ObjectType) + 1) * sizeof(WCHAR) + CreateParametersSize;
     Name.MaximumLength += sizeof(WCHAR);
     Name.Buffer = ExAllocatePool(NonPagedPool, Name.MaximumLength);
 
@@ -52,8 +52,7 @@
                           NULL,
                           IO_NO_PARAMETER_CHECKING | IO_FORCE_ACCESS_CHECK);
 
-    // HACK HACK HACK HACK
-    //ExFreePool(Name.Buffer);
+    ExFreePool(Name.Buffer);
     return Status;
 }
 

Modified: trunk/reactos/drivers/wdm/audio/sysaudio/control.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/sysaudio/control.c?rev=41835&r1=41834&r2=41835&view=diff
==============================================================================
--- trunk/reactos/drivers/wdm/audio/sysaudio/control.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/wdm/audio/sysaudio/control.c [iso-8859-1] Fri Jul 10 01:49:04 2009
@@ -42,7 +42,7 @@
     OBJECT_ATTRIBUTES ObjectAttributes;
     UNICODE_STRING Name;
 
-    Name.Length = (wcslen(ObjectType) + 1) * sizeof(WCHAR) + CreateParametersSize;
+    Name.Length = Name.MaximumLength = (wcslen(ObjectType) + 1) * sizeof(WCHAR) + CreateParametersSize;
     Name.MaximumLength += sizeof(WCHAR);
     Name.Buffer = ExAllocatePool(NonPagedPool, Name.MaximumLength);
 
@@ -75,6 +75,8 @@
                           NULL,
                           IO_NO_PARAMETER_CHECKING | IO_FORCE_ACCESS_CHECK);
 
+    ExFreePool(Name.Buffer);
+
     return Status;
 }
 
@@ -984,6 +986,7 @@
 
     RtlStringFromGUID(&Property->Set, &GuidString);
     DPRINT1("Unhandeled property Set |%S| Id %u Flags %x\n", GuidString.Buffer, Property->Id, Property->Flags);
+    DbgBreakPoint();
     RtlFreeUnicodeString(&GuidString);
     return SetIrpIoStatus(Irp, STATUS_UNSUCCESSFUL, 0);
 }



More information about the Ros-diffs mailing list