mirror of
https://github.com/reactos/reactos.git
synced 2025-05-11 13:27:47 +00:00
[ntoskrnl/io]
- Check for null pointers before attempting to copy or free memory. svn path=/trunk/; revision=47049
This commit is contained in:
parent
60eddf5657
commit
02c3f0fa12
1 changed files with 7 additions and 3 deletions
|
@ -884,6 +884,7 @@ IoGetDeviceInterfaces(IN CONST GUID *InterfaceClassGuid,
|
||||||
NextReferenceString:
|
NextReferenceString:
|
||||||
ExFreePool(ReferenceBi);
|
ExFreePool(ReferenceBi);
|
||||||
ReferenceBi = NULL;
|
ReferenceBi = NULL;
|
||||||
|
if (bip)
|
||||||
ExFreePool(bip);
|
ExFreePool(bip);
|
||||||
bip = NULL;
|
bip = NULL;
|
||||||
if (ReferenceKey != INVALID_HANDLE_VALUE)
|
if (ReferenceKey != INVALID_HANDLE_VALUE)
|
||||||
|
@ -921,8 +922,11 @@ NextReferenceString:
|
||||||
Status = STATUS_INSUFFICIENT_RESOURCES;
|
Status = STATUS_INSUFFICIENT_RESOURCES;
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
if (ReturnBuffer.Buffer)
|
||||||
|
{
|
||||||
RtlCopyMemory(NewBuffer, ReturnBuffer.Buffer, ReturnBuffer.Length);
|
RtlCopyMemory(NewBuffer, ReturnBuffer.Buffer, ReturnBuffer.Length);
|
||||||
ExFreePool(ReturnBuffer.Buffer);
|
ExFreePool(ReturnBuffer.Buffer);
|
||||||
|
}
|
||||||
ReturnBuffer.Buffer = NewBuffer;
|
ReturnBuffer.Buffer = NewBuffer;
|
||||||
}
|
}
|
||||||
ReturnBuffer.Buffer[ReturnBuffer.Length / sizeof(WCHAR)] = UNICODE_NULL;
|
ReturnBuffer.Buffer[ReturnBuffer.Length / sizeof(WCHAR)] = UNICODE_NULL;
|
||||||
|
|
Loading…
Reference in a new issue