16a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines// RUN: %clangxx_asan -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s 26a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines 36a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines// Test the frexp() interceptor. 46a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines 56a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines#include <math.h> 66a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines#include <stdio.h> 76a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines#include <stdlib.h> 86a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hinesint main() { 96a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines double x = 3.14; 106a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines int *exp = (int*)malloc(sizeof(int)); 116a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines free(exp); 126a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines double y = frexp(x, exp); 136a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines // CHECK: use-after-free 146a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines // CHECK: SUMMARY 156a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines return 0; 166a211c5814e25d6745a5058cc0e499e5235d3821Stephen Hines} 17