diff options
| author | sin | 2015-03-11 09:17:56 +0000 |
|---|---|---|
| committer | sin | 2015-03-11 09:17:56 +0000 |
| commit | 4b4dfea25d660a8a27e95ea531686001246b3d1e (patch) | |
| tree | ded4bfd59df022936c5807f7549b197dc9dcfa9a /include/string.h | |
| parent | 4f9058faae6a2ef889e9dcf113e483e27e6c1b08 (diff) | |
Fix invalid conversion in C++ code
/usr/include/fortify/string.h: In function 'void* __fortify_memcpy(void*, const void*, size_t)':
/usr/include/fortify/string.h:13:12: error: invalid conversion from 'void*' to 'char*' [-fpermissive]
/usr/include/fortify/string.h:14:18: error: invalid conversion from 'const void*' to 'const char*' [-fpermissive]
Since we are relying on GCC anyway, assume void * arithmetic is OK.
Diffstat (limited to '')
| -rw-r--r-- | include/string.h | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/include/string.h b/include/string.h index 6771b1d..86c258d 100644 --- a/include/string.h +++ b/include/string.h | |||
| @@ -10,13 +10,11 @@ void * | |||
| 10 | __fortify_memcpy(void *dest, const void *src, size_t n) | 10 | __fortify_memcpy(void *dest, const void *src, size_t n) |
| 11 | { | 11 | { |
| 12 | size_t bos = __builtin_object_size(dest, 0); | 12 | size_t bos = __builtin_object_size(dest, 0); |
| 13 | char *d = dest; | ||
| 14 | const char *s = src; | ||
| 15 | 13 | ||
| 16 | /* trap if pointers are overlapping but not if dest == src. | 14 | /* trap if pointers are overlapping but not if dest == src. |
| 17 | * gcc seems to like to generate code that relies on dest == src */ | 15 | * gcc seems to like to generate code that relies on dest == src */ |
| 18 | if ((d < s && d + n > s) || | 16 | if ((dest < src && dest + n > src) || |
| 19 | (s < d && s + n > d)) | 17 | (src < dest && src + n > dest)) |
| 20 | __builtin_trap(); | 18 | __builtin_trap(); |
| 21 | if (n > bos) | 19 | if (n > bos) |
| 22 | __builtin_trap(); | 20 | __builtin_trap(); |
