brintos

brintos / llvm-project-archived public Read only

0
0
Text · 987 B · a60335a Raw
39 lines · c
1// Tests dfsan_flush().2// RUN: %clang_dfsan %s -o %t && %run %t3// RUN: %clang_dfsan -DORIGIN_TRACKING -mllvm -dfsan-track-origins=1 %s -o %t && %run %t4 5#include <sanitizer/dfsan_interface.h>6#include <assert.h>7#include <stdlib.h>8 9int global;10 11int main() {12  int local;13  int *heap = (int*)malloc(sizeof(int));14 15  dfsan_set_label(10, &global, sizeof(global));16  dfsan_set_label(20, &local, sizeof(local));17  dfsan_set_label(30, heap, sizeof(*heap));18 19  assert(dfsan_get_label(global) == 10);20  assert(dfsan_get_label(local) == 20);21  assert(dfsan_get_label(*heap) == 30);22#ifdef ORIGIN_TRACKING23  assert(dfsan_get_origin(global));24  assert(dfsan_get_origin(local));25  assert(dfsan_get_origin(*heap));26#endif27 28  dfsan_flush();29 30  assert(dfsan_get_label(global) == 0);31  assert(dfsan_get_label(local) == 0);32  assert(dfsan_get_label(*heap) == 0);33  assert(dfsan_get_origin(global) == 0);34  assert(dfsan_get_origin(local) == 0);35  assert(dfsan_get_origin(*heap) == 0);36 37  free(heap);38}39