Commit Graph

189 Commits

Author SHA1 Message Date
Kostya Serebryany 390cf94f88 [asan] asan_allocator2: do not align the requested size to the redzone size (saves a bit more memory)
llvm-svn: 171111
2012-12-26 12:20:35 +00:00
Kostya Serebryany 35cc75876a [asan] asan_allocator2: implement adaptive redzones. Now with asan_allocator2 allocations <= 48 bytes have 16 byte redzone, allocations of 48-96 bytes -- have 32 bytes redzone, etc (max redzone is 2048). If ASAN_OPTIONS=redzone=n is set, it changes the minimal redzone size
llvm-svn: 171107
2012-12-26 10:41:24 +00:00
Kostya Serebryany eff9b4b9b1 [asan] add a test for right OOB with special large sizes. Fix this test in asan_allocator2. More test tweaking for allocator2
llvm-svn: 171058
2012-12-25 09:40:20 +00:00
Kostya Serebryany 3674c6b13b [asan] add a flag alloc_dealloc_mismatch (off by default for now) which finds malloc/delete, new/free, new/delete[], etc mismatches
llvm-svn: 170869
2012-12-21 08:53:59 +00:00
Richard Relph 27cfe1c1b5 Clean up some warnings that become errors. Seen in Xcode.
llvm-svn: 170843
2012-12-21 05:17:13 +00:00
Kostya Serebryany 8627af3779 [asan] add memalign tests
llvm-svn: 170687
2012-12-20 12:11:52 +00:00
Kostya Serebryany f855bbc2f3 [asan] add ASAN_PCRE_DOTALL to two new multi-line regexps
llvm-svn: 170677
2012-12-20 07:26:33 +00:00
Alexander Potapenko 7e1fcb8136 [ASan] Change the boilerplate check in the libdispatch tests to fix them.
llvm-svn: 170531
2012-12-19 11:26:41 +00:00
Alexey Samsonov 65c14f5314 [ASan] more macro for conditional interception of pread functions
llvm-svn: 170112
2012-12-13 08:10:23 +00:00
Alexander Potapenko d27e4861bf [ASan] Fix test expectations for strcat/strncat.
llvm-svn: 169987
2012-12-12 16:10:46 +00:00
Alexander Potapenko dab1a61011 [ASan] Enhance OOB tests to check for access type (read or write).
llvm-svn: 169974
2012-12-12 12:59:47 +00:00
Kostya Serebryany 28a32c89e9 [asan] fix android build and lint
llvm-svn: 169968
2012-12-12 11:37:23 +00:00
Kostya Serebryany 9a58d399c7 [asan] add sanitizer_common/sanitizer_common_interceptors.h with pread/pread64/read interceptors. Use it in asan. Add asan tests for pread/etc. Add FIXME to tsan/msan interceptors
llvm-svn: 169966
2012-12-12 09:54:35 +00:00
Kostya Serebryany 3ba26fe553 [asan] make ThreadNamesTest more flexible
llvm-svn: 169822
2012-12-11 06:23:10 +00:00
Kostya Serebryany 40bac5b01f [asan] fix lint, remove debug prints
llvm-svn: 169620
2012-12-07 18:07:52 +00:00
Kostya Serebryany e7108227ca [asan] intercept prctl(PR_SET_NAME) and set the thread name. Output the thread names (if non-empty) in asan reports
llvm-svn: 169601
2012-12-07 15:15:01 +00:00
Kostya Serebryany 86975ce3fb [asan] drop the extension from asan tests (as the extension may be different)
llvm-svn: 169392
2012-12-05 17:56:54 +00:00
Kostya Serebryany d5aafcf618 [asan] in asan tests, check all return values of pthread_create/pthread_join. Also add the ASAN_AVOID_EXPENSIVE_TESTS macro to guard the test that creates too many threads
llvm-svn: 169118
2012-12-03 09:43:56 +00:00
Kostya Serebryany 436462046a [asan] make asan_test.cc more gcc-friendly
llvm-svn: 168992
2012-11-30 10:41:42 +00:00
Kostya Serebryany dde9dcc24b [asan] disable BuiltinLongJmpTest on Android
llvm-svn: 168872
2012-11-29 12:18:48 +00:00
Kostya Serebryany e73a480970 [asan] enable BuiltinLongJmpTest
llvm-svn: 168863
2012-11-29 09:02:14 +00:00
Kostya Serebryany df5f3028e2 [asan] add DISABLED_BuiltinLongJmpTest
llvm-svn: 168793
2012-11-28 15:01:23 +00:00
Kostya Serebryany 734f1eb5f4 [asan/tsan] do not use __WORDSIZE macro, as it is glibc-private thing. Instead, define our own SANITIZER_WORDSIZE
llvm-svn: 168424
2012-11-21 12:38:58 +00:00
Alexey Samsonov 5f1a7589ad [ASan] unit tests: Move main() to a separate file. Fix lint
llvm-svn: 166104
2012-10-17 14:04:57 +00:00
Alexey Samsonov 7b52cb9e6d [ASan] Fix strchr/index tests for users who have 'char* strchr(char*,int)' instead of 'char* strchr(const char*, int)'
llvm-svn: 166101
2012-10-17 13:39:09 +00:00
Alexey Samsonov 4230a4a05a [ASan] don't use attribute no_address_safety_analysis if it's unknown to compiler
llvm-svn: 166099
2012-10-17 13:19:59 +00:00
Kostya Serebryany ee112b5d7f [asan] fix more tests
llvm-svn: 165934
2012-10-15 13:30:38 +00:00
Alexey Samsonov c3f61d8eec [ASan] Fix unit test headers. Add an option to change substitute asan_test_config.h file
llvm-svn: 164821
2012-09-28 12:24:23 +00:00
Alexey Samsonov 11b9e97cd9 [ASan] cleanup: fix headers and lint warnings
llvm-svn: 164205
2012-09-19 07:07:46 +00:00
Alexander Potapenko 431ea19327 Intercept signal() and sigaction() within the dynamic runtime on Mac.
Add a test that ensures that ASan does not allow to override the signal handlers.

llvm-svn: 164118
2012-09-18 12:49:51 +00:00
Evgeniy Stepanov 6c0850afa4 Remove some debugging code.
llvm-svn: 163881
2012-09-14 08:57:50 +00:00
Alexander Potapenko f3a96894a6 Give more accurate malloc statistics to malloc_zone_statistics().
Fix a warning in macros instantiation.

llvm-svn: 163716
2012-09-12 15:29:50 +00:00
Alexey Samsonov 26d7a06da3 [ASan] fix compiler warnings for unit test on Android
llvm-svn: 163704
2012-09-12 12:07:36 +00:00
Evgeniy Stepanov 65fb0a5425 [asan] Use __ANDROID__ guard in asan_test.
llvm-svn: 163313
2012-09-06 12:50:28 +00:00
Kostya Serebryany ad855e9438 [asan] better diagnostics for mmap failure
llvm-svn: 161874
2012-08-14 15:18:40 +00:00
Alexander Potapenko 33824c54f6 Make strcat() and strncat() more standard-compliant (check for invalid parameters even if zero bytes is copied, more accurate overlap check)
Fix the tests that were relying on the incorrect behavior.

llvm-svn: 161167
2012-08-02 10:25:46 +00:00
Alexander Potapenko 51e6488b31 Intercept CFAllocator for each thread in the program.
Test that child threads use the ASan allocator, that allocated memory can be passed to another thread and deallocated on it.
This should fix http://code.google.com/p/address-sanitizer/issues/detail?id=81

llvm-svn: 160630
2012-07-23 14:07:58 +00:00
Alexey Samsonov 37d5134f38 [ASan] minor fixes to silence cmake build warnings
llvm-svn: 160624
2012-07-23 09:11:58 +00:00
Alexander Potapenko 245f4ae59a Small lint fix.
llvm-svn: 158922
2012-06-21 16:40:59 +00:00
Alexander Potapenko 70feed27ea Add a test for issue 81 -- AddressSanitizerMac.DISABLED_CFAllocatorDefaultDoubleFree_ChildPhread
llvm-svn: 158921
2012-06-21 16:08:11 +00:00
Alexander Potapenko 15b4cafd2c Enable AddressSanitizerMac.CFAllocatorDefaultDoubleFree and AddressSanitizerMac.CFAllocatorMallocDoubleFree, which now work fine.
llvm-svn: 158886
2012-06-21 01:04:30 +00:00
Alexander Potapenko f9f2fbacb3 Actually intercept free() to ensure that the deallocations caused by other functions directly calling it are routed to our allocator.
For the allocations that do not belong to any malloc zone check whether they're padded with a pointer to ASan's CFAllocator. If so, free the original (unpadded) pointer.
This should fix AddressSanitizerMac.NSURLDeallocation and issue 70.

llvm-svn: 158863
2012-06-20 22:29:09 +00:00
Alexander Potapenko 50e788b724 Add a test for NSURL deallocation (issue 70)
llvm-svn: 158843
2012-06-20 20:28:39 +00:00
Alexey Samsonov f26b842ca8 [ASan] add interceptor for strncat
llvm-svn: 158198
2012-06-08 13:27:46 +00:00
Alexey Samsonov 485d3dc363 Remove file-type tags for .cc files in ASan run-time library
llvm-svn: 157927
2012-06-04 13:50:10 +00:00
Kostya Serebryany 4fa4ac1290 [asan] fix one test on 32-bit Mac 10.7; enable another test on Mac
llvm-svn: 157237
2012-05-22 07:44:30 +00:00
Kostya Serebryany c5bf3ad922 [asan] fix asan issue #66 (correctly report type of the bug)
llvm-svn: 155344
2012-04-23 10:08:16 +00:00
Kostya Serebryany d45a71c2bc [asan] test for issue #66
llvm-svn: 155127
2012-04-19 14:53:51 +00:00
Alexander Potapenko bc42d44112 Change the way ASan interacts with custom signal handlers.
From now on we allow the clients to override signal handlers set by ASan, but print a warning in such a case.

Remove the tests for signal() and sigaction(), because they made little sense even without this change.

llvm-svn: 154390
2012-04-10 11:00:26 +00:00
Timur Iskhodzhanov 36a7cc6292 Use 'typename' instead of 'class' in template<> definitions supporting POD types
llvm-svn: 154314
2012-04-09 11:50:27 +00:00
Alexander Potapenko 4f1d3e8eaa Make sure NSObjects are allocated in a way that is visible to ASan.
llvm-svn: 153762
2012-03-30 17:31:15 +00:00
Alexey Samsonov b33c87bbb9 [ASan] interceptors for atoi/atol/atoll
llvm-svn: 153637
2012-03-29 08:04:35 +00:00
Alexey Samsonov 0a4f8dc0cb [ASan] add interceptor for strtol
llvm-svn: 153444
2012-03-26 16:42:22 +00:00
Alexey Samsonov c8efe828a9 [ASan] add interceptor for strtoll
llvm-svn: 153376
2012-03-24 08:39:14 +00:00
Timur Iskhodzhanov 99cc6235bc [ASan/tests] Make 'noinline' and a bunch of other stuff portable
llvm-svn: 153333
2012-03-23 13:10:59 +00:00
Timur Iskhodzhanov f392910965 [ASan] replace '#if ... or ...' with '#if ... || ...'
llvm-svn: 153332
2012-03-23 12:21:47 +00:00
Kostya Serebryany 3f56851f5c [asan] extend the test for long double bug
llvm-svn: 153190
2012-03-21 15:29:28 +00:00
Evgeniy Stepanov f485c3ccbd [asan] Add a negative test for memcpy of long double.
llvm-svn: 151888
2012-03-02 10:42:10 +00:00
Evgeniy Stepanov d84e16e6a3 Replace some #ifdef(s) with plain if(s).
llvm-svn: 151526
2012-02-27 13:07:29 +00:00
Alexey Samsonov 8e7bfceb98 AddressSanitizer: fix lint
llvm-svn: 150802
2012-02-17 08:31:10 +00:00
Evgeniy Stepanov 5d47e9164c [asan] Allocator tweaks for low memory systems.
llvm-svn: 150689
2012-02-16 13:35:11 +00:00
Evgeniy Stepanov 450c123218 [asan] Add a missing return.
It is technically reachable on Android, where pthread_exit is not
marked noreturn.

llvm-svn: 150381
2012-02-13 12:36:44 +00:00
Kostya Serebryany 9716914b2d [asan] better warning messages for double-free bugs (provide allocation/deallocation stack traces)
llvm-svn: 150027
2012-02-08 00:42:29 +00:00
Kostya Serebryany b5eb5a7a05 [asan] make sure the AsanThread object is destroyed if pthread_exit is called
llvm-svn: 149940
2012-02-07 00:27:15 +00:00
Alexander Potapenko f504602a0f Disables testing memcpy() on Mac OS 10.7,
where memcpy() in fact aliases memmove() and thus calling it with
overlapping parameters is not an error.

llvm-svn: 149491
2012-02-01 09:47:40 +00:00
Kostya Serebryany 39ba3f724f [asan] fix issue 35: don't let the optimizer to optimize the test code away.
llvm-svn: 149296
2012-01-30 23:23:26 +00:00
Kostya Serebryany cf2c65aa8e [asan] add a test for __attribute__ no_address_safety_analysis
llvm-svn: 149278
2012-01-30 21:34:59 +00:00
Alexander Potapenko 046ecc06be Wrap CFStringCreateCopy to prevent copying constant CF strings.
This should fix http://code.google.com/p/address-sanitizer/issues/detail?id=10

llvm-svn: 148696
2012-01-23 10:09:54 +00:00
Alexander Potapenko f9392011c8 Add a test for CFStringCreateCopy.
Normally this function should not create copies of constant strings, but it does when the default CFAllocator
is replaced (e.g. under AddressSanitizer)

This test is related to http://code.google.com/p/address-sanitizer/issues/detail?id=10

llvm-svn: 148695
2012-01-23 10:06:14 +00:00
Kostya Serebryany 5767f0f113 [asan] workaround for bug http://llvm.org/bugs/show_bug.cgi?id=11763. Do not bark on memcpy(a, a, size).
llvm-svn: 148318
2012-01-17 18:43:52 +00:00
Alexey Samsonov 67d508d083 Revert commit 148304
llvm-svn: 148305
2012-01-17 14:01:15 +00:00
Alexey Samsonov 1e310295d0 AddressSanitizer: from this patch, ASan allocator returns false for __asan_get_ownership(NULL) and produce error reports for malloc_usable_size(NULL) and __asan_get_allocated_size(NULL)
llvm-svn: 148304
2012-01-17 13:31:54 +00:00
Alexey Samsonov 209c514a1d AddressSanitizer: add support for malloc_usable_size() function
llvm-svn: 148287
2012-01-17 06:39:10 +00:00
Alexey Samsonov 50bf956f29 AddressSanitizer: fix recently introduced lint errors and broken test on Mac.
llvm-svn: 148235
2012-01-16 12:38:09 +00:00
Evgeniy Stepanov 2227207c83 Disable posix_memalign test on Android.
llvm-svn: 148234
2012-01-16 12:19:51 +00:00
Kostya Serebryany cc1d7893d6 [asan] remove objdump-based tests in favour of much simpler LLVM-ish tests
llvm-svn: 147514
2012-01-04 02:08:46 +00:00
Kostya Serebryany 76eca5e53a [asan] enable memset/memcpy/memmove interceptors in asan-rt (in addition to those in the compiler module)
llvm-svn: 147319
2011-12-28 19:55:30 +00:00
Kostya Serebryany e4a84c4f1f [asan] better message for parameter overlap bugs
llvm-svn: 147317
2011-12-28 19:24:31 +00:00
Kostya Serebryany 50bc2a71b2 [asan] interceptor for strcat. Patch by samsonov@google.com
llvm-svn: 147316
2011-12-28 19:08:49 +00:00
Kostya Serebryany 6579e355c0 [asan] interceptor for memcmp. Patch by samsonov@google.com
llvm-svn: 147315
2011-12-28 18:56:42 +00:00
Kostya Serebryany 809632e28e [asan] interceptors for strcasecmp and strncasecmp. patch by samsonov@google.com
llvm-svn: 147304
2011-12-28 02:24:50 +00:00
Kostya Serebryany 5469986da0 [asan] remove the test for cfree. 'man cfree' says: 'This function should never be used.' and this function is not found on many OSes we support.
llvm-svn: 147301
2011-12-27 23:42:55 +00:00
Kostya Serebryany db32f967b9 [asan] rely on __has_feature(address_sanitizer) instead of the ADDRESS_SANITIZER macro
llvm-svn: 147297
2011-12-27 21:57:12 +00:00
Kostya Serebryany 7ce9686921 [asan] added a test to check that a global-buffer-overflow mentioned the module name; revert incorrect change in the test runner
llvm-svn: 146701
2011-12-15 22:57:32 +00:00
Kostya Serebryany d47a91ad2a [asan] canonicalise the output for double-free and wrong-free. fixes asan issue 18
llvm-svn: 146501
2011-12-13 19:16:36 +00:00
Kostya Serebryany 7c01c1af19 [asan] better test for use-after-return mode
llvm-svn: 146203
2011-12-08 23:30:48 +00:00
Kostya Serebryany f0d799a6bc [asan] fix the error message for 16-byte accesses (it previously printed 'unknown-crash')
llvm-svn: 146075
2011-12-07 21:30:20 +00:00
Kostya Serebryany 8b815e1a08 [asan] GCD tests on Mac: prevent optimization and enable. Patch by glider@google.com
llvm-svn: 145953
2011-12-06 19:10:48 +00:00
Kostya Serebryany 019b76f5fd AddressSanitizer run-time library. Not yet integrated with the compiler-rt build system, but can be built using the old makefile. See details in README.txt
llvm-svn: 145463
2011-11-30 01:07:02 +00:00