summaryrefslogtreecommitdiff
path: root/include/strings.h
diff options
context:
space:
mode:
authorsin2015-02-24 18:12:27 +0000
committersin2015-02-24 18:14:33 +0000
commiteecef18261cc278fbc13ecbfb4e5bc10762cc794 (patch)
tree483074e25fbbcbb198ac4d339b84ace4205987f6 /include/strings.h
parent9a77136c5914f6be50df195dac0f99424252a297 (diff)
Remove compile time checks
These can produce false positives. Given that we support fortify source level 1 we shouldn't break valid code.
Diffstat (limited to '')
-rw-r--r--include/strings.h12
1 files changed, 0 insertions, 12 deletions
diff --git a/include/strings.h b/include/strings.h
index e23c8eb..943b565 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -5,36 +5,26 @@
5 5
6#if defined(_FORTIFY_SOURCE) && _FORTIFY_SOURCE > 0 && defined(__OPTIMIZE__) && __OPTIMIZE__ > 0 6#if defined(_FORTIFY_SOURCE) && _FORTIFY_SOURCE > 0 && defined(__OPTIMIZE__) && __OPTIMIZE__ > 0
7 7
8#define __errordecl(name, msg) extern void name(void) __attribute__ ((__error__(msg)))
9
10#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_POSIX_SOURCE) \ 8#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_POSIX_SOURCE) \
11 || (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE+0 < 200809L) \ 9 || (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE+0 < 200809L) \
12 || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE+0 < 700) 10 || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE+0 < 700)
13__errordecl(__bcopy_error, "bcopy: buffer overflow detected");
14static inline __attribute__ ((always_inline)) 11static inline __attribute__ ((always_inline))
15void 12void
16__fortify_bcopy(const void *src, void *dest, size_t n) 13__fortify_bcopy(const void *src, void *dest, size_t n)
17{ 14{
18 size_t bos = __builtin_object_size(dest, 0); 15 size_t bos = __builtin_object_size(dest, 0);
19 16
20 if (__builtin_constant_p(n) && n > bos)
21 __bcopy_error();
22
23 if (n > bos) 17 if (n > bos)
24 __builtin_trap(); 18 __builtin_trap();
25 return bcopy(src, dest, n); 19 return bcopy(src, dest, n);
26} 20}
27 21
28__errordecl(__bzero_error, "bzero: buffer overflow detected");
29static inline __attribute__ ((always_inline)) 22static inline __attribute__ ((always_inline))
30void 23void
31__fortify_bzero(void *src, size_t n) 24__fortify_bzero(void *src, size_t n)
32{ 25{
33 size_t bos = __builtin_object_size(src, 0); 26 size_t bos = __builtin_object_size(src, 0);
34 27
35 if (__builtin_constant_p(n) && n > bos)
36 __bzero_error();
37
38 if (n > bos) 28 if (n > bos)
39 __builtin_trap(); 29 __builtin_trap();
40 return bzero(src, n); 30 return bzero(src, n);
@@ -46,8 +36,6 @@ __fortify_bzero(void *src, size_t n)
46#define bzero(src, n) __fortify_bzero(src, n) 36#define bzero(src, n) __fortify_bzero(src, n)
47#endif 37#endif
48 38
49#undef __errordecl
50
51#endif 39#endif
52 40
53#endif 41#endif