12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- #include <string.h>
- #include <stddef.h>
- #include "memcopy.h"
- #include "bp-checks.h"
- #undef strcpy
- char attribute_hidden *__strcpy (char *dest, const char *src)
- {
- reg_char c;
- char *__unbounded s = (char *__unbounded) CHECK_BOUNDS_LOW (src);
- const ptrdiff_t off = CHECK_BOUNDS_LOW (dest) - s - 1;
- size_t n;
- do
- {
- c = *s++;
- s[off] = c;
- }
- while (c != '\0');
- n = s - src;
- (void) CHECK_BOUNDS_HIGH (src + n);
- (void) CHECK_BOUNDS_HIGH (dest + n);
- return dest;
- }
- strong_alias(__strcpy, strcpy)
|