Commit Graph

127 Commits

Author SHA1 Message Date
Evgeniy Stepanov 86a4d2c32b [sanitizer] Intercept fgetpwent / fgetgrent.
These interceptors require deep unpoisoning of return values.
While at it, we do the same for all other pw/gr interceptors to
reduce dependency on libc implementation details.

llvm-svn: 205004
2014-03-28 13:03:55 +00:00
Evgeniy Stepanov 74e77756ef [sanitizer] Intercept getpwent/getgrent.
llvm-svn: 205000
2014-03-28 10:56:07 +00:00
Evgeniy Stepanov 9dcd5a353a [msan] Intercept several malloc-related functions.
llvm-svn: 204923
2014-03-27 13:29:29 +00:00
Evgeniy Stepanov 1382fabd97 [msan] Enable SelectPartial test.
Fixed in r204716.

llvm-svn: 204717
2014-03-25 13:09:14 +00:00
Evgeniy Stepanov 517ff05ffb [msan] Fix compiler warning in msan_test.cc.
llvm-svn: 204708
2014-03-25 10:03:39 +00:00
Evgeniy Stepanov 90384ad60e [msan] A disabled test for inexact "select" instrumentation.
llvm-svn: 204707
2014-03-25 09:36:15 +00:00
Alexey Samsonov 8c956460d3 Make MSan unittest -Werror=sign-compare clean
llvm-svn: 204592
2014-03-24 09:41:11 +00:00
Evgeniy Stepanov 9fa9a49853 [msan] Test for aggregates passing through ellipsis.
llvm-svn: 203795
2014-03-13 13:18:15 +00:00
Alexey Samsonov 6dece3c99f Add common interceptors for memchr/memrchr
llvm-svn: 202972
2014-03-05 13:25:32 +00:00
Evgeniy Stepanov f7abc8dff6 [msan] Tests for X86 SIMD bitshift intrinsic support.
llvm-svn: 202713
2014-03-03 13:52:36 +00:00
Evgeniy Stepanov a21280307f [sanitizer] Fix getpwuid_r (and similar) interceptors missing one of the arguments.
llvm-svn: 201410
2014-02-14 12:32:15 +00:00
Evgeniy Stepanov 05938a23f5 [sanitizer] Use mmap to zero-fill large shadow regions.
This is covered by existing ASan test.
This does not change anything for TSan by default (but provides a flag to 
change the threshold size).
Based on a patch by florent.bruneau here:
  https://code.google.com/p/address-sanitizer/issues/detail?id=256

llvm-svn: 201400
2014-02-14 11:41:26 +00:00
Sergey Matveev 1394f2da85 [msan] Rewrite strto* interceptors and add a few more.
Express the strto* interceptors though macros. This removes a lot of
duplicate code and fixes a couple of copypasto bugs (where "res" was declared of
a different type than the actual return type). Also, add a few more interceptors
for strto*_l.

llvm-svn: 200316
2014-01-28 13:45:58 +00:00
Evgeniy Stepanov 0b09c623c1 [msan] Replace assert() with GTest ASSERT_* in msan_test.
llvm-svn: 200293
2014-01-28 08:51:39 +00:00
Evgeniy Stepanov 3ee789cbbb [msan] Temporarily disable two tests that are failing with new glibc.
llvm-svn: 198919
2014-01-10 07:34:16 +00:00
Evgeniy Stepanov cb98c5f6f0 [msan] Relax gethostbyname_r test condition.
Apparently, its return value depends on the glibc version.

llvm-svn: 197390
2013-12-16 15:01:31 +00:00
Evgeniy Stepanov 43fc44007d [msan] Fix gethostbyname_r and similar interceptors.
*h_errno is written not on success, but on failure.
In fact, it seems like it can be written even when return value signals
success, so we just unpoison it in all cases.

llvm-svn: 197383
2013-12-16 13:24:33 +00:00
Evgeniy Stepanov 3158ec4002 [msan] Fix strncat interceptor, add missing tests.
llvm-svn: 197244
2013-12-13 16:31:59 +00:00
Evgeniy Stepanov 584fd96e9e [msan] Unpoison memory that is returned to the OS and flush its shadow.
llvm-svn: 195244
2013-11-20 12:51:14 +00:00
Evgeniy Stepanov bfb2016c83 [msan] Fix origin tracking in unaligned load/store.
llvm-svn: 195130
2013-11-19 14:47:56 +00:00
Evgeniy Stepanov 1c8c3fe4b4 [msan] Fix a very unfortunate typo in origin copying.
It was causing randomly missing origins.

llvm-svn: 194036
2013-11-05 01:24:38 +00:00
Evgeniy Stepanov a6b5eec757 [sanitizer] Intercept strptime.
llvm-svn: 193903
2013-11-02 01:01:35 +00:00
Evgeniy Stepanov 365bd0c88c [msan] Intercept memccpy.
llvm-svn: 193897
2013-11-01 23:49:48 +00:00
Evgeniy Stepanov a7add488ae [msan] Disable mlock/mlockall to work around a linux kernel bug.
The same logic is present in ASan and TSan.

llvm-svn: 193755
2013-10-31 15:51:22 +00:00
Evgeniy Stepanov 0bd1f00ec6 [sanitizer] Intercept drand48_r, lrand48_r.
llvm-svn: 193655
2013-10-29 22:25:27 +00:00
Evgeniy Stepanov bf60342d47 [sanitizer] Intercept sincos, remquo, lgamma, lgamma_r.
llvm-svn: 193645
2013-10-29 19:49:35 +00:00
Evgeniy Stepanov 451c8de2d8 [msan] Intercept shmat.
llvm-svn: 193581
2013-10-29 02:48:49 +00:00
Evgeniy Stepanov 94042e1ff2 [sanitizer] Intercept tmpnam, tmpnam_r, tempnam.
llvm-svn: 193415
2013-10-25 15:51:48 +00:00
Evgeniy Stepanov 2acb2470f9 [sanitizer] Remove pthread_attr_getstackaddr interceptor.
The function is deprecated.

llvm-svn: 193409
2013-10-25 14:27:00 +00:00
Evgeniy Stepanov 07507ffab4 [msan] Zerofill initstate_r buffer in random_r test.
llvm-svn: 193406
2013-10-25 13:03:20 +00:00
Evgeniy Stepanov c2b6cb0747 [sanitizer] Intercept pthread_attr_get*.
llvm-svn: 193405
2013-10-25 13:01:31 +00:00
Evgeniy Stepanov be9cdbb58c [sanitizer] Intercept random_r.
llvm-svn: 193396
2013-10-25 08:58:13 +00:00
Evgeniy Stepanov f312b480e2 [sanitizer] Intercept shmctl.
llvm-svn: 193348
2013-10-24 14:47:34 +00:00
Evgeniy Stepanov d280ee48e8 [msan] Fix invalid origin copying.
Origin copying may destroy valid origin info. This is caused by
__msan_copy_origin widening the address range to the nearest 4-byte aligned
addresses both on the left and on the right. If the target buffer is
uninitialized and the source is fully initialized, this will result in
overriding valid origin of target buffer with stale (possibly 0) origin of the
source buffer.

With this change the widened origin is copied only if corresponding shadow
values are non zero.

llvm-svn: 193338
2013-10-24 11:56:03 +00:00
Evgeniy Stepanov 3e6064f9d2 [sanitizer] Intercept ether_* functions.
llvm-svn: 193241
2013-10-23 13:57:47 +00:00
Evgeniy Stepanov 3cb9df042e [sanitizer] Move statfs/fstatfs to common interceptors and add statvfs/fstatvfs.
llvm-svn: 192965
2013-10-18 11:14:16 +00:00
Evgeniy Stepanov 70d5abfba2 [sanitizer] Intercept getmntent, getmntent_r.
llvm-svn: 192959
2013-10-18 09:41:43 +00:00
Evgeniy Stepanov 4bbf273173 [sanitizer] Fix unpoisoning of msghdr::msg_name in recvmsg interceptor.
llvm-svn: 192886
2013-10-17 11:32:30 +00:00
Alexey Samsonov bc7c87a8cb [Sanitizer] Move pthread_cond_signal and pthread_cond_broadcast to common interceptors
llvm-svn: 192876
2013-10-17 09:24:03 +00:00
Alexey Samsonov edecc38395 Make some pthread_mutex_* and pthread_cond_* interceptors common.
Reviewers: eugenis, dvyukov

Reviewed By: dvyukov

CC: llvm-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D1937

llvm-svn: 192774
2013-10-16 08:20:31 +00:00
Evgeniy Stepanov 7a2bbc30a2 [msan] Remove CallocOverflow test.
This behaviour depends on MSAN_OPTIONS.
All interesting combinations are covered by lit_tests/allocator_returns_null.cc.

llvm-svn: 192691
2013-10-15 12:20:16 +00:00
Evgeniy Stepanov 7aacd9c172 [msan] Intercept strto(d|f|ld)_l and glibc-specific __strto(d|f|ld)_l.
llvm-svn: 192583
2013-10-14 11:52:40 +00:00
Evgeniy Stepanov c907a60ffb [sanitizer] Fix localtime and gmtime interceptors to clean tm->tm_zone.
llvm-svn: 191827
2013-10-02 14:30:03 +00:00
Evgeniy Stepanov 8f27f6b549 [sanitizer] A bunch of libc interceptors.
sigwait
sigwaitinfo
sigtimedwait
sigemptyset
sigfillset
sigpending
sigprocmask

llvm-svn: 191374
2013-09-25 14:47:43 +00:00
Evgeniy Stepanov 2761ee0409 [sanitizer] Intercept wordexp.
llvm-svn: 191305
2013-09-24 14:38:22 +00:00
Evgeniy Stepanov 842fa3f80d [msan] Intercept fstatat / fstatat64.
llvm-svn: 190306
2013-09-09 13:40:41 +00:00
Kostya Serebryany 6c5b034d7b [msan] make calloc crash instead of returning 0 on overflow (controlled by the allocator_may_return_null flag)
llvm-svn: 190132
2013-09-06 10:58:55 +00:00
Evgeniy Stepanov f9ddb43975 [msan] A regression test for r189785.
llvm-svn: 189786
2013-09-03 10:05:45 +00:00
Evgeniy Stepanov e3eaa7bb35 [msan] Intercept memalign, valloc, pvalloc.
PR17039

llvm-svn: 189750
2013-09-02 09:24:53 +00:00
Evgeniy Stepanov 82185980c4 [msan] A test for ppoll() interceptor.
llvm-svn: 189339
2013-08-27 11:10:20 +00:00