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

fork_fuzz.c (1089B)


      1/*
      2 * Fork-based fuzzing helpers
      3 *
      4 * Copyright Red Hat Inc., 2019
      5 *
      6 * Authors:
      7 *  Alexander Bulekov   <alxndr@bu.edu>
      8 *
      9 * This work is licensed under the terms of the GNU GPL, version 2 or later.
     10 * See the COPYING file in the top-level directory.
     11 *
     12 */
     13
     14#include "qemu/osdep.h"
     15#include "fork_fuzz.h"
     16
     17
     18void counter_shm_init(void)
     19{
     20    /* Copy what's in the counter region to a temporary buffer.. */
     21    void *copy = malloc(&__FUZZ_COUNTERS_END - &__FUZZ_COUNTERS_START);
     22    memcpy(copy,
     23           &__FUZZ_COUNTERS_START,
     24           &__FUZZ_COUNTERS_END - &__FUZZ_COUNTERS_START);
     25
     26    /* Map a shared region over the counter region */
     27    if (mmap(&__FUZZ_COUNTERS_START,
     28             &__FUZZ_COUNTERS_END - &__FUZZ_COUNTERS_START,
     29             PROT_READ | PROT_WRITE, MAP_SHARED | MAP_FIXED | MAP_ANONYMOUS,
     30             0, 0) == MAP_FAILED) {
     31        perror("Error: ");
     32        exit(1);
     33    }
     34
     35    /* Copy the original data back to the counter-region */
     36    memcpy(&__FUZZ_COUNTERS_START, copy,
     37           &__FUZZ_COUNTERS_END - &__FUZZ_COUNTERS_START);
     38    free(copy);
     39}
     40
     41