cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

check_mmap2.c (833B)


      1/*
      2#notarget: cris*-*-elf
      3*/
      4
      5#define _GNU_SOURCE
      6#include <string.h>
      7#include <stdlib.h>
      8#include <stdio.h>
      9#include <sys/types.h>
     10#include <sys/stat.h>
     11#include <fcntl.h>
     12#include <unistd.h>
     13#include <sys/mman.h>
     14
     15int main (int argc, char *argv[])
     16{
     17  int fd = open (argv[0], O_RDONLY);
     18  struct stat sb;
     19  int size;
     20  void *a;
     21  const char *str = "a string you'll only find in the program";
     22
     23  if (fd == -1)
     24    {
     25      perror ("open");
     26      abort ();
     27    }
     28
     29  if (fstat (fd, &sb) < 0)
     30    {
     31      perror ("fstat");
     32      abort ();
     33    }
     34
     35  size = sb.st_size;
     36
     37  /* We want to test mmapping a size that isn't exactly a page.  */
     38  if ((size & 8191) == 0)
     39    size--;
     40
     41  a = mmap (NULL, size, PROT_READ, MAP_SHARED, fd, 0);
     42
     43  if (memmem (a, size, str, strlen (str) + 1) == NULL)
     44    abort ();
     45
     46  printf ("pass\n");
     47  exit (0);
     48}