Fix returning the context of the current thread in NtGetContextThread

svn path=/trunk/; revision=24580
This commit is contained in:
Thomas Bluemel 2006-10-20 13:45:52 +00:00
parent cf98132b2f
commit de34ab04c1

View file

@ -174,8 +174,7 @@ PsGetContextThread(IN PETHREAD Thread,
Size = sizeof(CONTEXT);
/* Read the flags */
ProbeForReadUlong(&ThreadContext->ContextFlags);
Flags = ThreadContext->ContextFlags;
Flags = ProbeForReadUlong(&ThreadContext->ContextFlags);
/* Check if the caller wanted extended registers */
if ((Flags & CONTEXT_EXTENDED_REGISTERS) !=
@ -256,11 +255,19 @@ PsGetContextThread(IN PETHREAD Thread,
FALSE,
NULL);
}
/* Copy the context */
RtlMoveMemory(ThreadContext, &GetSetContext.Context, Size);
}
_SEH_TRY
{
/* Copy the context */
RtlCopyMemory(ThreadContext, &GetSetContext.Context, Size);
}
_SEH_HANDLE
{
Status = _SEH_GetExceptionCode();
}
_SEH_END;
/* Return status */
return Status;
}
@ -285,8 +292,7 @@ PsSetContextThread(IN PETHREAD Thread,
Size = sizeof(CONTEXT);
/* Read the flags */
ProbeForReadUlong(&ThreadContext->ContextFlags);
Flags = ThreadContext->ContextFlags;
Flags = ProbeForReadUlong(&ThreadContext->ContextFlags);
/* Check if the caller wanted extended registers */
if ((Flags & CONTEXT_EXTENDED_REGISTERS) !=
@ -304,7 +310,7 @@ PsSetContextThread(IN PETHREAD Thread,
}
/* Copy the context */
RtlMoveMemory(&GetSetContext.Context, ThreadContext, Size);
RtlCopyMemory(&GetSetContext.Context, ThreadContext, Size);
}
_SEH_HANDLE
{