Buckets:
| /** | |
| * @license | |
| * Copyright 2019 The Emscripten Authors | |
| * SPDX-License-Identifier: MIT | |
| */ | |
| #if STACK_OVERFLOW_CHECK | |
| // Initializes the stack cookie. Called at the startup of main and at the startup of each thread in pthreads mode. | |
| function writeStackCookie() { | |
| var max = _emscripten_stack_get_end(); | |
| #if RUNTIME_DEBUG | |
| dbg(`writeStackCookie: ${ptrToString(max)}`); | |
| #endif | |
| #if ASSERTIONS | |
| assert((max & 3) == 0); | |
| #endif | |
| // If the stack ends at address zero we write our cookies 4 bytes into the | |
| // stack. This prevents interference with SAFE_HEAP and ASAN which also | |
| // monitor writes to address zero. | |
| if (max == 0) { | |
| max += 4; | |
| } | |
| // The stack grow downwards towards _emscripten_stack_get_end. | |
| // We write cookies to the final two words in the stack and detect if they are | |
| // ever overwritten. | |
| {{{ makeSetValue('max', 0, '0x02135467', 'u32') }}}; | |
| {{{ makeSetValue('max', 4, '0x89BACDFE', 'u32') }}}; | |
| #if CHECK_NULL_WRITES | |
| // Also test the global address 0 for integrity. | |
| {{{ makeSetValue(0, 0, 0x63736d65 /* 'emsc' */, 'u32') }}}; | |
| #endif | |
| } | |
| function checkStackCookie() { | |
| #if !MINIMAL_RUNTIME | |
| if (ABORT) return; | |
| #endif | |
| var max = _emscripten_stack_get_end(); | |
| #if RUNTIME_DEBUG >= 2 | |
| dbg(`checkStackCookie: ${ptrToString(max)}`); | |
| #endif | |
| // See writeStackCookie(). | |
| if (max == 0) { | |
| max += 4; | |
| } | |
| var cookie1 = {{{ makeGetValue('max', 0, 'u32') }}}; | |
| var cookie2 = {{{ makeGetValue('max', 4, 'u32') }}}; | |
| if (cookie1 != 0x02135467 || cookie2 != 0x89BACDFE) { | |
| abort(`Stack overflow! Stack cookie has been overwritten at ${ptrToString(max)}, expected hex dwords 0x89BACDFE and 0x2135467, but received ${ptrToString(cookie2)} ${ptrToString(cookie1)}`); | |
| } | |
| #if CHECK_NULL_WRITES | |
| // Also test the global address 0 for integrity. | |
| if ({{{ makeGetValue(0, 0, 'u32') }}} != 0x63736d65 /* 'emsc' */) { | |
| abort('Runtime error: The application has corrupted its heap memory area (address zero)!'); | |
| } | |
| #endif | |
| } | |
| #endif | |
Xet Storage Details
- Size:
- 1.96 kB
- Xet hash:
- 6db376718ba14d70c673041f63c20f1c0f69439575029a484e3589b97b3a4e67
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.