mirror of
https://github.com/reactos/reactos.git
synced 2025-06-24 17:50:00 +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
|
||||
IsValidRangeList(
|
||||
_In_ PINTERNAL_RANGE_LIST pRangeList)
|
||||
_In_opt_ PINTERNAL_RANGE_LIST pRangeList)
|
||||
{
|
||||
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.@]
|
||||
*/
|
||||
|
@ -2049,7 +2073,7 @@ CM_Free_Log_Conf_Ex(
|
|||
return CR_ACCESS_DENIED;
|
||||
|
||||
pLogConfInfo = (PLOG_CONF_INFO)lcLogConfToBeFreed;
|
||||
if (pLogConfInfo == NULL || pLogConfInfo->ulMagic != LOG_CONF_MAGIC)
|
||||
if (!IsValidLogConf(pLogConfInfo))
|
||||
return CR_INVALID_LOG_CONF;
|
||||
|
||||
if (ulFlags != 0)
|
||||
|
@ -2103,7 +2127,7 @@ CM_Free_Log_Conf_Handle(
|
|||
TRACE("CM_Free_Log_Conf_Handle(%lx)\n", lcLogConf);
|
||||
|
||||
pLogConfInfo = (PLOG_CONF_INFO)lcLogConf;
|
||||
if (pLogConfInfo == NULL || pLogConfInfo->ulMagic != LOG_CONF_MAGIC)
|
||||
if (!IsValidLogConf(pLogConfInfo))
|
||||
return CR_INVALID_LOG_CONF;
|
||||
|
||||
HeapFree(GetProcessHeap(), 0, pLogConfInfo);
|
||||
|
@ -4709,7 +4733,7 @@ CM_Get_Log_Conf_Priority_Ex(
|
|||
lcLogConf, pPriority, ulFlags, hMachine);
|
||||
|
||||
pLogConfInfo = (PLOG_CONF_INFO)lcLogConf;
|
||||
if (pLogConfInfo == NULL || pLogConfInfo->ulMagic != LOG_CONF_MAGIC)
|
||||
if (!IsValidLogConf(pLogConfInfo))
|
||||
return CR_INVALID_LOG_CONF;
|
||||
|
||||
if (pPriority == NULL)
|
||||
|
@ -4800,7 +4824,7 @@ CM_Get_Next_Log_Conf_Ex(
|
|||
*plcLogConf = 0;
|
||||
|
||||
pLogConfInfo = (PLOG_CONF_INFO)lcLogConf;
|
||||
if (pLogConfInfo == NULL || pLogConfInfo->ulMagic != LOG_CONF_MAGIC)
|
||||
if (!IsValidLogConf(pLogConfInfo))
|
||||
return CR_INVALID_LOG_CONF;
|
||||
|
||||
if (ulFlags != 0)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue