revoke1.c
up: index
prev: cast1.c
next: revoke2.c
#include <stdio.h>
#include <stdlib.h>
#include <cheriintrin.h>
#include "capprint.h"
int main()
{
void *p = malloc(10);
fprintf(stderr,"Before free: %" PTR_FMT "\n", sptr(p));
free(p);
fprintf(stderr,"After free: %" PTR_FMT "\n", sptr(p));
#ifdef WITH_CORNUCOPIA
cheri_revoke();
fprintf(stderr,"After cheri_revoke: %" PTR_FMT "\n", sptr(p));
#endif
}
Experimental data (what does this mean?)
cerberus-cheri-cornucopia-no-pnvi Before free: (@disabled, 0xffffe6c0 [rwRW,0xffffe6c0-0xffffe6ca])
After free: (@disabled, 0xffffe6c0 [rwRW,0xffffe6c0-0xffffe6ca])
After cheri_revoke: (@disabled, 0xffffe6c0 [rwRW,0xffffe6c0-0xffffe6ca] (invalid))
cerberus-cheri-cornucopia Before free: (@84, 0xffffe6c0 [rwRW,0xffffe6c0-0xffffe6ca])
After free: (@84, 0xffffe6c0 [rwRW,0xffffe6c0-0xffffe6ca])
After cheri_revoke: (@84, 0xffffe6c0 [rwRW,0xffffe6c0-0xffffe6ca] (invalid))
cerberus-cheri-revocation-no-pnvi Before free: (@disabled, 0xffffe6e0 [rwRW,0xffffe6e0-0xffffe6ea])
After free: (@disabled, 0xffffe6e0 [rwRW,0xffffe6e0-0xffffe6ea] (invalid))
cerberus-cheri-revocation Before free: (@83, 0xffffe6e0 [rwRW,0xffffe6e0-0xffffe6ea])
After free: (@83, 0xffffe6e0 [rwRW,0xffffe6e0-0xffffe6ea] (invalid))
cerberus-cheri-no-pnvi Before free: (@disabled, 0xffffe6e0 [rwRW,0xffffe6e0-0xffffe6ea])
After free: (@disabled, 0xffffe6e0 [rwRW,0xffffe6e0-0xffffe6ea])
cerberus-cheri Before free: (@83, 0xffffe6e0 [rwRW,0xffffe6e0-0xffffe6ea])
After free: (@83, 0xffffe6e0 [rwRW,0xffffe6e0-0xffffe6ea])
clang-riscv-O0-bounds-conservative
clang-riscv-O3-bounds-conservative
clang-riscv-O0-bounds-references-only
clang-riscv-O0-bounds-subobject-safe
clang-riscv-O3-bounds-subobject-safe
clang-riscv-O0-bounds-aggressive
clang-riscv-O0-bounds-very-aggressive
clang-riscv-O0-bounds-everywhere-unsafe Before free: 0x40a1d000 [rwRW,0x40a1d000-0x40a1d00a]
After free: 0x40a1d000 [rwRW,0x40a1d000-0x40a1d00a]
clang-morello-O0-bounds-conservative
clang-morello-O3-bounds-conservative
clang-morello-O0-bounds-references-only
clang-morello-O0-bounds-subobject-safe
clang-morello-O3-bounds-subobject-safe
clang-morello-O0-bounds-aggressive
clang-morello-O0-bounds-very-aggressive
clang-morello-O0-bounds-everywhere-unsafe Before free: 0x40c1d000 [rwRW,0x40c1d000-0x40c1d00a]
After free: 0x40c1d000 [rwRW,0x40c1d000-0x40c1d00a]
gcc-morello-O0
gcc-morello-O3 Before free: 0x40000010 [rwRW,0x40000010-0x4000001a]
After free: 0x40000010 [rwRW,0x40000010-0x4000001a]