diff options
author | Jiyoung Yun <jy910.yun@samsung.com> | 2016-11-23 19:09:09 +0900 |
---|---|---|
committer | Jiyoung Yun <jy910.yun@samsung.com> | 2016-11-23 19:09:09 +0900 |
commit | 4b4aad7217d3292650e77eec2cf4c198ea9c3b4b (patch) | |
tree | 98110734c91668dfdbb126fcc0e15ddbd93738ca /src/pal/tests/palsuite/debug_api/WriteProcessMemory/test4/helper.c | |
parent | fa45f57ed55137c75ac870356a1b8f76c84b229c (diff) | |
download | coreclr-4b4aad7217d3292650e77eec2cf4c198ea9c3b4b.tar.gz coreclr-4b4aad7217d3292650e77eec2cf4c198ea9c3b4b.tar.bz2 coreclr-4b4aad7217d3292650e77eec2cf4c198ea9c3b4b.zip |
Imported Upstream version 1.1.0upstream/1.1.0
Diffstat (limited to 'src/pal/tests/palsuite/debug_api/WriteProcessMemory/test4/helper.c')
-rw-r--r-- | src/pal/tests/palsuite/debug_api/WriteProcessMemory/test4/helper.c | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/pal/tests/palsuite/debug_api/WriteProcessMemory/test4/helper.c b/src/pal/tests/palsuite/debug_api/WriteProcessMemory/test4/helper.c new file mode 100644 index 0000000000..b653ea5057 --- /dev/null +++ b/src/pal/tests/palsuite/debug_api/WriteProcessMemory/test4/helper.c @@ -0,0 +1,67 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +/*============================================================= +** +** Source: helper.c +** +** Purpose: This helper process sets up a block of memory, then +** raises an exception to pass that memory location back to the +** parent process. When the parent process is done calling WriteProcessMemory +** we check here that it was written properly. +** +** +**============================================================*/ + +#include <palsuite.h> +const int MY_EXCEPTION=999; + +int __cdecl main(int argc, char *argv[]) +{ + + char* Memory; + char* TheArray[1]; + int i; + + if(0 != (PAL_Initialize(argc, argv))) + { + return FAIL; + } + + Memory = (char*)VirtualAlloc(NULL, 4096, MEM_COMMIT, PAGE_READONLY); + + if(Memory == NULL) + { + Fail("ERROR: Attempted to allocate two pages, but the VirtualAlloc " + "call failed. GetLastError() returned %d.\n",GetLastError()); + } + + + TheArray[0] = Memory; + + + /* Need to sleep for a couple seconds. Otherwise this process + won't be being debugged when the first exception is raised. + */ + Sleep(4000); + + RaiseException(MY_EXCEPTION, 0, 1, (ULONG_PTR*)TheArray); + + for(i=0; i<4096; ++i) + { + if(Memory[i] != '\0') + { + Fail("ERROR: The memory should be unchanged after the " + "invalid call to WriteProcessMemory, but the char " + "at index %d has changed.\n",i); + } + } + + + + + + PAL_Terminate(); + return PASS; +} |