12d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// RUN: %clangxx_asan -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s 215832c2afc4f04fa558160441d1b01fb3f0ec08bAlexander Potapenko 3c754cd70347b33da0475b191a5d6bad9d5c4362cAlexander Potapenko// Test the time() interceptor. 415832c2afc4f04fa558160441d1b01fb3f0ec08bAlexander Potapenko 55d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines// There's no interceptor for time() on Windows yet. 65d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines// XFAIL: win32 75d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines 815832c2afc4f04fa558160441d1b01fb3f0ec08bAlexander Potapenko#include <stdio.h> 915832c2afc4f04fa558160441d1b01fb3f0ec08bAlexander Potapenko#include <stdlib.h> 1015832c2afc4f04fa558160441d1b01fb3f0ec08bAlexander Potapenko#include <time.h> 1115832c2afc4f04fa558160441d1b01fb3f0ec08bAlexander Potapenko 1215832c2afc4f04fa558160441d1b01fb3f0ec08bAlexander Potapenkoint main() { 1315832c2afc4f04fa558160441d1b01fb3f0ec08bAlexander Potapenko time_t *tm = (time_t*)malloc(sizeof(time_t)); 1415832c2afc4f04fa558160441d1b01fb3f0ec08bAlexander Potapenko free(tm); 15c754cd70347b33da0475b191a5d6bad9d5c4362cAlexander Potapenko time_t t = time(tm); 162c02f6327f51243fc0ba17992cecb2857fa8bdf8Kostya Serebryany printf("Time: %s\n", ctime(&t)); // NOLINT 1715832c2afc4f04fa558160441d1b01fb3f0ec08bAlexander Potapenko // CHECK: use-after-free 185d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines // Regression check for 195d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines // https://code.google.com/p/address-sanitizer/issues/detail?id=321 205d71de26cedae3dafc17449fe0182045c0bd20e8Stephen Hines // CHECK: SUMMARY 2115832c2afc4f04fa558160441d1b01fb3f0ec08bAlexander Potapenko return 0; 2215832c2afc4f04fa558160441d1b01fb3f0ec08bAlexander Potapenko} 23