Joseph Galbraith wrote:
Hartmut Birr wrote:
weiden@svn.reactos.com schrieb:
implemented the ProcessSessionInformation information class
Updated files: trunk/reactos/ntoskrnl/ps/process.c
I think that some parts of your implementation are incorrect. The function must check for the location of the buffer and the previous mode. If the previous mode is user mode, the buffer must be located within the user address space. IMHO using of MmCopyFrom/ToCaller is better than using an exception block. It is also true for your following commits.
Do MmCopyFrom/ToCaller use SEH?
If not, both are necessary. Using SEH protects from another thread in the process (or some other component) free the VM page and cause a crash.
So not only must the address be checked to make sure it is a user mode address iff the caller is user mode, but the parameter need to be copied using SEH; otherwise what was just probed as valid may become invalid before the copy can be done.
Yes... and no...
our exception handler has a special-case for MmCopyFrom/MmCopyTo.
The upshot is that those two functions have SEH without explicitly needing to setup an SEH frame for it.