mirror of
https://github.com/reactos/reactos.git
synced 2025-06-05 09:20:30 +00:00
[UMPNPMGR] PNP_RegisterNotification: Add notification filter parameter checks
This commit is contained in:
parent
b695971c7f
commit
8f5fe0fa4f
1 changed files with 34 additions and 0 deletions
|
@ -3539,6 +3539,8 @@ PNP_RegisterNotification(
|
||||||
DWORD ulUnknown8,
|
DWORD ulUnknown8,
|
||||||
DWORD *pulUnknown9)
|
DWORD *pulUnknown9)
|
||||||
{
|
{
|
||||||
|
PDEV_BROADCAST_DEVICEINTERFACE_W pBroadcastDeviceInterface;
|
||||||
|
PDEV_BROADCAST_HANDLE pBroadcastDeviceHandle;
|
||||||
#if 0
|
#if 0
|
||||||
PNOTIFY_DATA pNotifyData;
|
PNOTIFY_DATA pNotifyData;
|
||||||
#endif
|
#endif
|
||||||
|
@ -3555,6 +3557,38 @@ PNP_RegisterNotification(
|
||||||
if (ulFlags & ~0x7)
|
if (ulFlags & ~0x7)
|
||||||
return CR_INVALID_FLAG;
|
return CR_INVALID_FLAG;
|
||||||
|
|
||||||
|
if ((ulNotificationFilterSize < sizeof(DEV_BROADCAST_HDR)) ||
|
||||||
|
(((PDEV_BROADCAST_HDR)pNotificationFilter)->dbch_size < sizeof(DEV_BROADCAST_HDR)))
|
||||||
|
return CR_INVALID_DATA;
|
||||||
|
|
||||||
|
if (((PDEV_BROADCAST_HDR)pNotificationFilter)->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE)
|
||||||
|
{
|
||||||
|
DPRINT1("DBT_DEVTYP_DEVICEINTERFACE\n");
|
||||||
|
pBroadcastDeviceInterface = (PDEV_BROADCAST_DEVICEINTERFACE_W)pNotificationFilter;
|
||||||
|
|
||||||
|
if ((ulNotificationFilterSize < sizeof(DEV_BROADCAST_DEVICEINTERFACE_W)) ||
|
||||||
|
(pBroadcastDeviceInterface->dbcc_size < sizeof(DEV_BROADCAST_DEVICEINTERFACE_W)))
|
||||||
|
return CR_INVALID_DATA;
|
||||||
|
}
|
||||||
|
else if (((PDEV_BROADCAST_HDR)pNotificationFilter)->dbch_devicetype == DBT_DEVTYP_HANDLE)
|
||||||
|
{
|
||||||
|
DPRINT1("DBT_DEVTYP_HANDLE\n");
|
||||||
|
pBroadcastDeviceHandle = (PDEV_BROADCAST_HANDLE)pNotificationFilter;
|
||||||
|
|
||||||
|
if ((ulNotificationFilterSize < sizeof(DEV_BROADCAST_HANDLE)) ||
|
||||||
|
(pBroadcastDeviceHandle->dbch_size < sizeof(DEV_BROADCAST_HANDLE)))
|
||||||
|
return CR_INVALID_DATA;
|
||||||
|
|
||||||
|
if (ulFlags & DEVICE_NOTIFY_ALL_INTERFACE_CLASSES)
|
||||||
|
return CR_INVALID_FLAG;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DPRINT1("Invalid device type %lu\n", ((PDEV_BROADCAST_HDR)pNotificationFilter)->dbch_devicetype);
|
||||||
|
return CR_INVALID_DATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
pNotifyData = RtlAllocateHeap(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(NOTIFY_DATA));
|
pNotifyData = RtlAllocateHeap(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(NOTIFY_DATA));
|
||||||
if (pNotifyData == NULL)
|
if (pNotifyData == NULL)
|
||||||
|
|
Loading…
Reference in a new issue