diff options
| author | sin | 2015-02-28 15:30:25 +0000 |
|---|---|---|
| committer | sin | 2015-02-28 15:30:25 +0000 |
| commit | 33d2ff5aa8b0bee2ba886857db4acfa9126e8b6d (patch) | |
| tree | fa0cf33f7b6462aa887d1f64adba4408f8ad28bb | |
| parent | 2f0e3f574f74e85f2a38aebc141f3d6fbc380910 (diff) | |
Add ttyname_r() check
| -rw-r--r-- | include/unistd.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/include/unistd.h b/include/unistd.h index 3c5eec9..7a49da0 100644 --- a/include/unistd.h +++ b/include/unistd.h | |||
| @@ -96,6 +96,17 @@ __fortify_read(int fd, void *buf, size_t n) | |||
| 96 | } | 96 | } |
| 97 | 97 | ||
| 98 | static inline __attribute__ ((always_inline)) | 98 | static inline __attribute__ ((always_inline)) |
| 99 | int | ||
| 100 | __fortify_ttyname_r(int fd, char *name, size_t n) | ||
| 101 | { | ||
| 102 | size_t bos = __builtin_object_size(name, 0); | ||
| 103 | |||
| 104 | if (n > bos) | ||
| 105 | __builtin_trap(); | ||
| 106 | return ttyname_r(fd, name, n); | ||
| 107 | } | ||
| 108 | |||
| 109 | static inline __attribute__ ((always_inline)) | ||
| 99 | ssize_t | 110 | ssize_t |
| 100 | __fortify_write(int fd, const void *buf, size_t n) | 111 | __fortify_write(int fd, const void *buf, size_t n) |
| 101 | { | 112 | { |
| @@ -126,6 +137,8 @@ __fortify_write(int fd, const void *buf, size_t n) | |||
| 126 | #define pread(fd, buf, n, offset) __fortify_pread(fd, buf, n, offset) | 137 | #define pread(fd, buf, n, offset) __fortify_pread(fd, buf, n, offset) |
| 127 | #undef read | 138 | #undef read |
| 128 | #define read(fd, buf, n) __fortify_read(fd, buf, n) | 139 | #define read(fd, buf, n) __fortify_read(fd, buf, n) |
| 140 | #undef ttyname_r | ||
| 141 | #define ttyname_r(fd, name, n) __fortify_ttyname_r(fd, name, n) | ||
| 129 | #undef write | 142 | #undef write |
| 130 | #define write(fd, buf, n) __fortify_write(fd, buf, n) | 143 | #define write(fd, buf, n) __fortify_write(fd, buf, n) |
| 131 | 144 | ||
