From 5dc6c5bb88afa3b0446bbdb76bd529668dbb4653 Mon Sep 17 00:00:00 2001 From: Johannes Anderwald Date: Sat, 22 Oct 2016 12:34:03 +0000 Subject: [PATCH] [USBAUDIO] - fix warnings & leaks based on Thomas feedback svn path=/trunk/; revision=73020 --- reactos/drivers/usb/usbaudio/filter.c | 18 +++++++++++------- reactos/drivers/usb/usbaudio/pin.c | 5 ++--- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/reactos/drivers/usb/usbaudio/filter.c b/reactos/drivers/usb/usbaudio/filter.c index 880a9d40812..b544b10e6ba 100644 --- a/reactos/drivers/usb/usbaudio/filter.c +++ b/reactos/drivers/usb/usbaudio/filter.c @@ -1083,6 +1083,11 @@ USBAudioGetDescriptor( /* store result */ *OutDescriptor = Descriptor; } + else + { + /* failed */ + FreeFunction(Descriptor); + } /* done */ return Status; @@ -1098,7 +1103,6 @@ USBAudioGetStringDescriptor( OUT PVOID *OutDescriptor) { NTSTATUS Status; - PUSB_STRING_DESCRIPTOR StringDescriptor; /* retrieve descriptor */ Status = USBAudioGetDescriptor(DeviceObject, USB_STRING_DESCRIPTOR_TYPE, DescriptorLength, DescriptorIndex, LanguageId, OutDescriptor); @@ -1124,14 +1128,14 @@ USBAudioRegCreateMediaCategoriesKey( RtlInitUnicodeString(&DestinationString, L"\\Registry\\Machine\\SYSTEM\\CurrentControlSet\\Control\\MediaCategories\\"); /* initialize object attributes */ - InitializeObjectAttributes(&ObjectAttributes, &DestinationString, OBJ_CASE_INSENSITIVE | OBJ_OPENIF, NULL, NULL); + InitializeObjectAttributes(&ObjectAttributes, &DestinationString, OBJ_CASE_INSENSITIVE | OBJ_OPENIF | OBJ_KERNEL_HANDLE, NULL, NULL); /* create the key */ Status = ZwOpenKey(&Handle, KEY_ALL_ACCESS, &ObjectAttributes); if (NT_SUCCESS(Status)) { /* initialize object attributes */ - InitializeObjectAttributes(&ObjectAttributes, Name, OBJ_CASE_INSENSITIVE, Handle, NULL); + InitializeObjectAttributes(&ObjectAttributes, Name, OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE, Handle, NULL); Status = ZwCreateKey(OutHandle, KEY_ALL_ACCESS, &ObjectAttributes, 0, NULL, 0, NULL); ZwClose(Handle); @@ -1228,8 +1232,8 @@ USBAudioCreateFilterContext( if (!NT_SUCCESS(Status)) { /* failed*/ - //FreeFunction(ComponentId); - //return Status; + FreeFunction(ComponentId); + return Status; } FilterDescriptor->ComponentId = ComponentId; @@ -1247,8 +1251,8 @@ USBAudioCreateFilterContext( if (!NT_SUCCESS(Status)) { /* failed*/ - //FreeFunction(ComponentId); - //return Status; + FreeFunction(ComponentId); + return Status; } /* lets create the filter */ diff --git a/reactos/drivers/usb/usbaudio/pin.c b/reactos/drivers/usb/usbaudio/pin.c index 353df9b6e0e..180f14a4ef4 100644 --- a/reactos/drivers/usb/usbaudio/pin.c +++ b/reactos/drivers/usb/usbaudio/pin.c @@ -789,7 +789,6 @@ PinCaptureProcess( PPIN_CONTEXT PinContext; PLIST_ENTRY CurEntry; PIRP Irp; - PIO_STACK_LOCATION IoStack; PURB Urb; PUCHAR TransferBuffer, OutBuffer; ULONG Offset, Length; @@ -827,7 +826,6 @@ PinCaptureProcess( Irp = (PIRP)CONTAINING_RECORD(CurEntry, IRP, Tail.Overlay.ListEntry); /* get urb from irp */ - IoStack = IoGetNextIrpStackLocation(Irp); Urb = (PURB)Irp->Tail.Overlay.DriverContext[0]; ASSERT(Urb); @@ -882,6 +880,7 @@ PinCaptureProcess( else { Status = KsStreamPointerAdvanceOffsets(LeadingStreamPointer, 0, Length, FALSE); + NT_ASSERT(NT_SUCCESS(Status)); ASSERT(Length == Urb->UrbIsochronousTransfer.TransferBufferLength - Offset); } @@ -1102,7 +1101,7 @@ UsbAudioPinDataIntersect( } /* get pin descriptor */ - PinDescriptor = &Filter->Descriptor->PinDescriptors[Pin->PinId]; + PinDescriptor = (PKSPIN_DESCRIPTOR_EX)&Filter->Descriptor->PinDescriptors[Pin->PinId]; *DataSize = sizeof(KSDATAFORMAT_WAVEFORMATEX); if (DataBufferSize == 0) -- 2.17.1