Skip to content

Commit d47cb26

Browse files
unix: unsafe-wrap install_main_guard_default
1 parent 6ed563d commit d47cb26

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

library/std/src/sys/pal/unix/stack_overflow.rs

+12-9
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,7 @@ mod imp {
419419
Some(stackaddr - page_size..stackaddr)
420420
}
421421

422+
#[forbid(unsafe_op_in_unsafe_fn)]
422423
unsafe fn install_main_guard_default(page_size: usize) -> Option<Range<usize>> {
423424
// Reallocate the last page of the stack.
424425
// This ensures SIGBUS will be raised on
@@ -429,19 +430,21 @@ mod imp {
429430
// read/write permissions and only then mprotect() it to
430431
// no permissions at all. See issue #50313.
431432
let stackptr = stack_start_aligned(page_size)?;
432-
let result = mmap64(
433-
stackptr,
434-
page_size,
435-
PROT_READ | PROT_WRITE,
436-
MAP_PRIVATE | MAP_ANON | MAP_FIXED,
437-
-1,
438-
0,
439-
);
433+
let result = unsafe {
434+
mmap64(
435+
stackptr,
436+
page_size,
437+
PROT_READ | PROT_WRITE,
438+
MAP_PRIVATE | MAP_ANON | MAP_FIXED,
439+
-1,
440+
0,
441+
)
442+
};
440443
if result != stackptr || result == MAP_FAILED {
441444
panic!("failed to allocate a guard page: {}", io::Error::last_os_error());
442445
}
443446

444-
let result = mprotect(stackptr, page_size, PROT_NONE);
447+
let result = unsafe { mprotect(stackptr, page_size, PROT_NONE) };
445448
if result != 0 {
446449
panic!("failed to protect the guard page: {}", io::Error::last_os_error());
447450
}

0 commit comments

Comments
 (0)