fork(2) download
  1. #include <iostream>
  2. #include <cstring>
  3. #include <sys/mman.h>
  4.  
  5. int main() {
  6. char *mem1 = (char*) mmap(NULL, 8192, PROT_READ | PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
  7. mprotect(mem1 + 4096, 4096, PROT_NONE); // disallow access to second page
  8. std::memset(mem1, 0, 4096);
  9. char mem2[8192] = {0};
  10. mem2[4094] = 1;
  11.  
  12. std::cout << std::memcmp(mem1 + 1, mem2, 4095) << std::endl; //works
  13. std::cout << std::memcmp(mem1 + 1, mem2, 8192) << std::endl; //crashes
  14.  
  15. return 0;
  16. }
  17.  
  18.  
Runtime error #stdin #stdout 0s 4524KB
stdin
Standard input is empty
stdout
-256