mirror of
https://github.com/reactos/reactos.git
synced 2025-06-27 20:19:50 +00:00
[SETUPAPI] Add a proper (SEH protected) check for LOG_CONF handles
This commit is contained in:
parent
60a218948e
commit
19fc20f222
1 changed files with 29 additions and 5 deletions
|
@ -341,7 +341,7 @@ done:
|
||||||
|
|
||||||
BOOL
|
BOOL
|
||||||
IsValidRangeList(
|
IsValidRangeList(
|
||||||
_In_ PINTERNAL_RANGE_LIST pRangeList)
|
_In_opt_ PINTERNAL_RANGE_LIST pRangeList)
|
||||||
{
|
{
|
||||||
BOOL bValid = TRUE;
|
BOOL bValid = TRUE;
|
||||||
|
|
||||||
|
@ -363,6 +363,30 @@ IsValidRangeList(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BOOL
|
||||||
|
IsValidLogConf(
|
||||||
|
_In_opt_ PLOG_CONF_INFO pLogConfInfo)
|
||||||
|
{
|
||||||
|
BOOL bValid = TRUE;
|
||||||
|
|
||||||
|
if (pLogConfInfo == NULL)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
_SEH2_TRY
|
||||||
|
{
|
||||||
|
if (pLogConfInfo->ulMagic != LOG_CONF_MAGIC)
|
||||||
|
bValid = FALSE;
|
||||||
|
}
|
||||||
|
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||||
|
{
|
||||||
|
bValid = FALSE;
|
||||||
|
}
|
||||||
|
_SEH2_END;
|
||||||
|
|
||||||
|
return bValid;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* CMP_GetBlockedDriverInfo [SETUPAPI.@]
|
* CMP_GetBlockedDriverInfo [SETUPAPI.@]
|
||||||
*/
|
*/
|
||||||
|
@ -2049,7 +2073,7 @@ CM_Free_Log_Conf_Ex(
|
||||||
return CR_ACCESS_DENIED;
|
return CR_ACCESS_DENIED;
|
||||||
|
|
||||||
pLogConfInfo = (PLOG_CONF_INFO)lcLogConfToBeFreed;
|
pLogConfInfo = (PLOG_CONF_INFO)lcLogConfToBeFreed;
|
||||||
if (pLogConfInfo == NULL || pLogConfInfo->ulMagic != LOG_CONF_MAGIC)
|
if (!IsValidLogConf(pLogConfInfo))
|
||||||
return CR_INVALID_LOG_CONF;
|
return CR_INVALID_LOG_CONF;
|
||||||
|
|
||||||
if (ulFlags != 0)
|
if (ulFlags != 0)
|
||||||
|
@ -2103,7 +2127,7 @@ CM_Free_Log_Conf_Handle(
|
||||||
TRACE("CM_Free_Log_Conf_Handle(%lx)\n", lcLogConf);
|
TRACE("CM_Free_Log_Conf_Handle(%lx)\n", lcLogConf);
|
||||||
|
|
||||||
pLogConfInfo = (PLOG_CONF_INFO)lcLogConf;
|
pLogConfInfo = (PLOG_CONF_INFO)lcLogConf;
|
||||||
if (pLogConfInfo == NULL || pLogConfInfo->ulMagic != LOG_CONF_MAGIC)
|
if (!IsValidLogConf(pLogConfInfo))
|
||||||
return CR_INVALID_LOG_CONF;
|
return CR_INVALID_LOG_CONF;
|
||||||
|
|
||||||
HeapFree(GetProcessHeap(), 0, pLogConfInfo);
|
HeapFree(GetProcessHeap(), 0, pLogConfInfo);
|
||||||
|
@ -4709,7 +4733,7 @@ CM_Get_Log_Conf_Priority_Ex(
|
||||||
lcLogConf, pPriority, ulFlags, hMachine);
|
lcLogConf, pPriority, ulFlags, hMachine);
|
||||||
|
|
||||||
pLogConfInfo = (PLOG_CONF_INFO)lcLogConf;
|
pLogConfInfo = (PLOG_CONF_INFO)lcLogConf;
|
||||||
if (pLogConfInfo == NULL || pLogConfInfo->ulMagic != LOG_CONF_MAGIC)
|
if (!IsValidLogConf(pLogConfInfo))
|
||||||
return CR_INVALID_LOG_CONF;
|
return CR_INVALID_LOG_CONF;
|
||||||
|
|
||||||
if (pPriority == NULL)
|
if (pPriority == NULL)
|
||||||
|
@ -4800,7 +4824,7 @@ CM_Get_Next_Log_Conf_Ex(
|
||||||
*plcLogConf = 0;
|
*plcLogConf = 0;
|
||||||
|
|
||||||
pLogConfInfo = (PLOG_CONF_INFO)lcLogConf;
|
pLogConfInfo = (PLOG_CONF_INFO)lcLogConf;
|
||||||
if (pLogConfInfo == NULL || pLogConfInfo->ulMagic != LOG_CONF_MAGIC)
|
if (!IsValidLogConf(pLogConfInfo))
|
||||||
return CR_INVALID_LOG_CONF;
|
return CR_INVALID_LOG_CONF;
|
||||||
|
|
||||||
if (ulFlags != 0)
|
if (ulFlags != 0)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue