diff options
author | Andreas Schneider <asn@samba.org> | 2015-01-23 15:22:18 +0100 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2015-01-28 17:17:07 +0100 |
commit | fa8290e7b9c3981dad94894e492991d7b9e8b3a9 (patch) | |
tree | 1711e03110cff9f376965eee43cac12305143468 /lib | |
parent | 50b6d948671850283d1d8e05c59758c8062c6e14 (diff) | |
download | samba-fa8290e7b9c3981dad94894e492991d7b9e8b3a9.tar.gz samba-fa8290e7b9c3981dad94894e492991d7b9e8b3a9.tar.xz samba-fa8290e7b9c3981dad94894e492991d7b9e8b3a9.zip |
uwrap: Add support for running with address sanitizer.
The address sanitzer will complain about our hack with variable function
attributes. This disables the checking of it.
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/uid_wrapper/uid_wrapper.c | 7 | ||||
-rw-r--r-- | lib/uid_wrapper/wscript | 20 |
2 files changed, 27 insertions, 0 deletions
diff --git a/lib/uid_wrapper/uid_wrapper.c b/lib/uid_wrapper/uid_wrapper.c index 8e3a7d3120..97e10267b5 100644 --- a/lib/uid_wrapper/uid_wrapper.c +++ b/lib/uid_wrapper/uid_wrapper.c @@ -63,6 +63,12 @@ #define DESTRUCTOR_ATTRIBUTE #endif /* HAVE_DESTRUCTOR_ATTRIBUTE */ +#ifdef HAVE_ADDRESS_SANITIZER_ATTRIBUTE +#define DO_NOT_SANITIZE_ADDRESS_ATTRIBUTE __attribute__((no_sanitize_address)) +#else /* DO_NOT_SANITIZE_ADDRESS_ATTRIBUTE */ +#define DO_NOT_SANITIZE_ADDRESS_ATTRIBUTE +#endif /* DO_NOT_SANITIZE_ADDRESS_ATTRIBUTE */ + /* GCC have printf type attribute check. */ #ifdef HAVE_FUNCTION_ATTRIBUTE_FORMAT #define PRINTF_ATTRIBUTE(a,b) __attribute__ ((__format__ (__printf__, a, b))) @@ -472,6 +478,7 @@ static int libc_setgroups(size_t size, const gid_t *list) } #ifdef HAVE_SYSCALL +DO_NOT_SANITIZE_ADDRESS_ATTRIBUTE static long int libc_vsyscall(long int sysno, va_list va) { long int args[8]; diff --git a/lib/uid_wrapper/wscript b/lib/uid_wrapper/wscript index 49c23d2610..61b54b94f0 100644 --- a/lib/uid_wrapper/wscript +++ b/lib/uid_wrapper/wscript @@ -1,5 +1,6 @@ #!/usr/bin/env python +import Options import os VERSION="1.0.1" @@ -68,6 +69,25 @@ def configure(conf): addmain=False, msg='Checking for library destructor support') + if Options.options.address_sanitizer: + # check HAVE_ADDRESS_SANITIZER_ATTRIBUTE + conf.CHECK_CODE(''' + void test_address_sanitizer_attribute(void) __attribute__((no_sanitize_address)); + + void test_address_sanitizer_attribute(void) + { + return; + } + + int main(void) { + return 0; + } + ''', + 'HAVE_ADDRESS_SANITIZER_ATTRIBUTE', + addmain=False, + cflags='-Wall -Wextra -Werror', + msg='Checking for address sanitizer attribute') + # check HAVE_FUNCTION_ATTRIBUTE_FORMAT conf.CHECK_CODE(''' void log_fn(const char *format, ...) __attribute__ ((format (printf, 1, 2))); |