forked from OSchip/llvm-project
Add a test for issue 81 -- AddressSanitizerMac.DISABLED_CFAllocatorDefaultDoubleFree_ChildPhread
llvm-svn: 158921
This commit is contained in:
parent
0e967e0186
commit
70feed27ea
|
@ -1,5 +1,5 @@
|
|||
extern "C" {
|
||||
void CFAllocatorDefaultDoubleFree();
|
||||
void *CFAllocatorDefaultDoubleFree(void *unused);
|
||||
void CFAllocatorSystemDefaultDoubleFree();
|
||||
void CFAllocatorMallocDoubleFree();
|
||||
void CFAllocatorMallocZoneDoubleFree();
|
||||
|
|
|
@ -9,7 +9,8 @@
|
|||
#import <Foundation/NSObject.h>
|
||||
#import <Foundation/NSURL.h>
|
||||
|
||||
void CFAllocatorDefaultDoubleFree() {
|
||||
// This is a (void*)(void*) function so it can be passed to pthread_create.
|
||||
void *CFAllocatorDefaultDoubleFree(void *unused) {
|
||||
void *mem = CFAllocatorAllocate(kCFAllocatorDefault, 5, 0);
|
||||
CFAllocatorDeallocate(kCFAllocatorDefault, mem);
|
||||
CFAllocatorDeallocate(kCFAllocatorDefault, mem);
|
||||
|
|
|
@ -1902,10 +1902,20 @@ TEST(AddressSanitizer, BufferOverflowAfterManyFrees) {
|
|||
#include "asan_mac_test.h"
|
||||
TEST(AddressSanitizerMac, CFAllocatorDefaultDoubleFree) {
|
||||
EXPECT_DEATH(
|
||||
CFAllocatorDefaultDoubleFree(),
|
||||
CFAllocatorDefaultDoubleFree(NULL),
|
||||
"attempting double-free");
|
||||
}
|
||||
|
||||
void CFAllocator_DoubleFreeOnPthread() {
|
||||
pthread_t child;
|
||||
pthread_create(&child, NULL, CFAllocatorDefaultDoubleFree, NULL);
|
||||
pthread_join(child, NULL); // Shouldn't be reached.
|
||||
}
|
||||
|
||||
TEST(AddressSanitizerMac, DISABLED_CFAllocatorDefaultDoubleFree_ChildPhread) {
|
||||
EXPECT_DEATH(CFAllocator_DoubleFreeOnPthread(), "attempting double-free");
|
||||
}
|
||||
|
||||
// TODO(glider): figure out whether we still need these tests. Is it correct
|
||||
// to intercept the non-default CFAllocators?
|
||||
TEST(AddressSanitizerMac, DISABLED_CFAllocatorSystemDefaultDoubleFree) {
|
||||
|
@ -1914,6 +1924,7 @@ TEST(AddressSanitizerMac, DISABLED_CFAllocatorSystemDefaultDoubleFree) {
|
|||
"attempting double-free");
|
||||
}
|
||||
|
||||
// We're intercepting malloc, so kCFAllocatorMalloc is routed to ASan.
|
||||
TEST(AddressSanitizerMac, CFAllocatorMallocDoubleFree) {
|
||||
EXPECT_DEATH(CFAllocatorMallocDoubleFree(), "attempting double-free");
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue