Skip to main content

mprotect

Function mprotect 

Source
pub fn mprotect(
    address: NonNull<u8>,
    length: usize,
    prot: ProtectionFlags,
) -> Result<(), Errno>
Expand description

Modifie les permissions d’une plage mémoire mappée.

Wrappeur de mprotect(2). Typiquement utilisé pour rétrograder les permissions après initialisation d’une zone en lecture seule.

§Parameters

  • address : adresse de début (doit être alignée sur la page size).
  • length : longueur de la plage en octets.
  • prot : nouvelles permissions.

§Errors

  • EINVAL : address non aligné, ou plage invalide.
  • EACCES : tentative d’ajouter EXEC sur un FS monté noexec.
  • ENOMEM : ressources kernel insuffisantes.

§Examples

use air_sys_syscall::mem::{mmap_anonymous, mprotect};
use air_sys_types::mem::{MapFlags, ProtectionFlags};
use core::ptr::NonNull;

let mut m = mmap_anonymous(4096, ProtectionFlags::READ | ProtectionFlags::WRITE, MapFlags::PRIVATE)
    .expect("mmap");
// Initialisez les données, puis passez en lecture seule :
mprotect(
    NonNull::new(m.as_mut_ptr()).expect("non-null"),
    4096,
    ProtectionFlags::READ,
).expect("mprotect");