summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/unistd.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/include/unistd.h b/include/unistd.h
index b193a7f..3c5eec9 100644
--- a/include/unistd.h
+++ b/include/unistd.h
@@ -42,6 +42,17 @@ __fortify_getdomainname(char *name, size_t len)
42 42
43static inline __attribute__ ((always_inline)) 43static inline __attribute__ ((always_inline))
44int 44int
45__fortify_getgroups(int len, gid_t *set)
46{
47 size_t bos = __builtin_object_size(set, 0);
48
49 if (bos != -1 && len > bos / sizeof(gid_t))
50 __builtin_trap();
51 return getgroups(len, set);
52}
53
54static inline __attribute__ ((always_inline))
55int
45__fortify_gethostname(char *name, size_t len) 56__fortify_gethostname(char *name, size_t len)
46{ 57{
47 size_t bos = __builtin_object_size(name, 0); 58 size_t bos = __builtin_object_size(name, 0);
@@ -105,6 +116,8 @@ __fortify_write(int fd, const void *buf, size_t n)
105#define getdomainname(name, len) __fortify_getdomainname(name, len) 116#define getdomainname(name, len) __fortify_getdomainname(name, len)
106#endif 117#endif
107 118
119#undef getgroups
120#define getgroups(len, set) __fortify_getgroups(len, set)
108#undef gethostname 121#undef gethostname
109#define gethostname(name, len) __fortify_gethostname(name, len) 122#define gethostname(name, len) __fortify_gethostname(name, len)
110#undef getlogin_r 123#undef getlogin_r