- Add missed checks of the buffer length

svn path=/trunk/; revision=41383
This commit is contained in:
Dmitry Chapyshev 2009-06-11 15:21:58 +00:00
parent 0b86b42306
commit e8062e7d29

View file

@ -782,6 +782,13 @@ NtSetInformationProcess(IN HANDLE ProcessHandle,
/* Error/Exception Port */
case ProcessExceptionPort:
/* Check buffer length */
if (ProcessInformationLength != sizeof(HANDLE))
{
Status = STATUS_INFO_LENGTH_MISMATCH;
break;
}
/* Use SEH for capture */
_SEH2_TRY
{
@ -819,6 +826,13 @@ NtSetInformationProcess(IN HANDLE ProcessHandle,
/* Security Token */
case ProcessAccessToken:
/* Check buffer length */
if (ProcessInformationLength != sizeof(PROCESS_ACCESS_TOKEN))
{
Status = STATUS_INFO_LENGTH_MISMATCH;
break;
}
/* Use SEH for capture */
_SEH2_TRY
{
@ -841,6 +855,13 @@ NtSetInformationProcess(IN HANDLE ProcessHandle,
/* Hard error processing */
case ProcessDefaultHardErrorMode:
/* Check buffer length */
if (ProcessInformationLength != sizeof(ULONG))
{
Status = STATUS_INFO_LENGTH_MISMATCH;
break;
}
/* Enter SEH for direct buffer read */
_SEH2_TRY
{
@ -859,6 +880,13 @@ NtSetInformationProcess(IN HANDLE ProcessHandle,
/* Session ID */
case ProcessSessionInformation:
/* Check buffer length */
if (ProcessInformationLength != sizeof(PROCESS_SESSION_INFORMATION))
{
Status = STATUS_INFO_LENGTH_MISMATCH;
break;
}
/* Enter SEH for capture */
_SEH2_TRY
{
@ -1062,6 +1090,13 @@ NtSetInformationThread(IN HANDLE ThreadHandle,
/* Thread priority */
case ThreadPriority:
/* Check buffer length */
if (ThreadInformationLength != sizeof(KPRIORITY))
{
Status = STATUS_INFO_LENGTH_MISMATCH;
break;
}
/* Use SEH for capture */
_SEH2_TRY
{
@ -1091,6 +1126,13 @@ NtSetInformationThread(IN HANDLE ThreadHandle,
case ThreadBasePriority:
/* Check buffer length */
if (ThreadInformationLength != sizeof(LONG))
{
Status = STATUS_INFO_LENGTH_MISMATCH;
break;
}
/* Use SEH for capture */
_SEH2_TRY
{
@ -1130,6 +1172,13 @@ NtSetInformationThread(IN HANDLE ThreadHandle,
case ThreadAffinityMask:
/* Check buffer length */
if (ThreadInformationLength != sizeof(ULONG_PTR))
{
Status = STATUS_INFO_LENGTH_MISMATCH;
break;
}
/* Use SEH for capture */
_SEH2_TRY
{
@ -1191,6 +1240,13 @@ NtSetInformationThread(IN HANDLE ThreadHandle,
case ThreadImpersonationToken:
/* Check buffer length */
if (ThreadInformationLength != sizeof(HANDLE))
{
Status = STATUS_INFO_LENGTH_MISMATCH;
break;
}
/* Use SEH for capture */
_SEH2_TRY
{
@ -1211,6 +1267,13 @@ NtSetInformationThread(IN HANDLE ThreadHandle,
case ThreadQuerySetWin32StartAddress:
/* Check buffer length */
if (ThreadInformationLength != sizeof(ULONG_PTR))
{
Status = STATUS_INFO_LENGTH_MISMATCH;
break;
}
/* Use SEH for capture */
_SEH2_TRY
{
@ -1231,6 +1294,13 @@ NtSetInformationThread(IN HANDLE ThreadHandle,
case ThreadIdealProcessor:
/* Check buffer length */
if (ThreadInformationLength != sizeof(ULONG_PTR))
{
Status = STATUS_INFO_LENGTH_MISMATCH;
break;
}
/* Use SEH for capture */
_SEH2_TRY
{
@ -1272,6 +1342,13 @@ NtSetInformationThread(IN HANDLE ThreadHandle,
case ThreadPriorityBoost:
/* Check buffer length */
if (ThreadInformationLength != sizeof(ULONG_PTR))
{
Status = STATUS_INFO_LENGTH_MISMATCH;
break;
}
/* Use SEH for capture */
_SEH2_TRY
{
@ -1292,6 +1369,13 @@ NtSetInformationThread(IN HANDLE ThreadHandle,
case ThreadZeroTlsCell:
/* Check buffer length */
if (ThreadInformationLength != sizeof(ULONG_PTR))
{
Status = STATUS_INFO_LENGTH_MISMATCH;
break;
}
/* Use SEH for capture */
_SEH2_TRY
{