ssp: add Object Size Checking for unistd.h, part 2

Message ID 20171130213937.21064-1-yselkowi@redhat.com
State New
Headers show
Series
  • ssp: add Object Size Checking for unistd.h, part 2
Related show

Commit Message

Yaakov Selkowitz Nov. 30, 2017, 9:39 p.m.
Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>

---
 newlib/libc/include/ssp/unistd.h | 44 ++++++++++++++++++++++++++++++++++++++--
 newlib/libc/ssp/ssp.tex          |  3 ++-
 2 files changed, 44 insertions(+), 3 deletions(-)

-- 
2.15.0

Comments

Corinna Vinschen Dec. 1, 2017, 9:39 a.m. | #1
On Nov 30 15:39, Yaakov Selkowitz wrote:
> Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>

> ---

>  newlib/libc/include/ssp/unistd.h | 44 ++++++++++++++++++++++++++++++++++++++--

>  newlib/libc/ssp/ssp.tex          |  3 ++-

>  2 files changed, 44 insertions(+), 3 deletions(-)


ACK


Thanks,
Corinna

-- 
Corinna Vinschen
Cygwin Maintainer
Red Hat

Patch

diff --git a/newlib/libc/include/ssp/unistd.h b/newlib/libc/include/ssp/unistd.h
index 861edd30b..5ca6ace7a 100644
--- a/newlib/libc/include/ssp/unistd.h
+++ b/newlib/libc/include/ssp/unistd.h
@@ -36,6 +36,40 @@ 
 #if __SSP_FORTIFY_LEVEL > 0
 __BEGIN_DECLS
 
+#if __POSIX_VISIBLE >= 199209
+__ssp_redirect(size_t, confstr, (int __name, char *__buf, size_t __len), \
+    (__name, __buf, __len));
+#endif
+
+__ssp_redirect_raw(char *, getcwd, (char *__buf, size_t __len),
+    (__buf, __len), __buf != 0, __ssp_bos);
+
+#if __BSD_VISIBLE || (__XSI_VISIBLE && __XSI_VISIBLE < 500)
+__ssp_redirect(int, getdomainname, (char *__buf, size_t __len), \
+    (__buf, __len));
+#endif
+
+__ssp_decl(int, getgroups, (int __n, gid_t __buf[]))
+{
+  __ssp_check(__buf, __n * sizeof(gid_t), __ssp_bos);
+  return __ssp_real_getgroups (__n, __buf);
+}
+
+#if __BSD_VISIBLE || __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE >= 500
+#if !(defined  (_WINSOCK_H) || defined (_WINSOCKAPI_) || defined (__USE_W32_SOCKETS))
+__ssp_redirect(int, gethostname, (char *__buf, size_t __len), \
+    (__buf, __len));
+#endif
+#endif
+
+__ssp_redirect(int, getlogin_r, (char *__buf, size_t __len), \
+    (__buf, __len));
+
+#if __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE >= 500
+__ssp_redirect0(ssize_t, pread, (int __fd, void *__buf, size_t __len, off_t __off), \
+    (__fd, __buf, __len, __off));
+#endif
+
 __ssp_redirect0(_READ_WRITE_RETURN_TYPE, read, \
     (int __fd, void *__buf, size_t __len), (__fd, __buf, __len));
 
@@ -44,8 +78,14 @@  __ssp_redirect(ssize_t, readlink, (const char *__restrict __path, \
     char *__restrict __buf, size_t __len), (__path, __buf, __len));
 #endif
 
-__ssp_redirect_raw(char *, getcwd, (char *__buf, size_t __len),
-    (__buf, __len), __buf != 0, __ssp_bos);
+#if __ATFILE_VISIBLE
+__ssp_redirect(ssize_t, readlinkat, \
+    (int __dirfd1, const char *__restrict __path, char *__restrict __buf, size_t __len), \
+    (__dirfd1, __path, __buf, __len));
+#endif
+
+__ssp_redirect(int, ttyname_r, (int __fd, char *__buf, size_t __len), \
+    (__fd, __buf, __len));
 
 __END_DECLS
 
diff --git a/newlib/libc/ssp/ssp.tex b/newlib/libc/ssp/ssp.tex
index b30ecf159..1e0cb6b12 100644
--- a/newlib/libc/ssp/ssp.tex
+++ b/newlib/libc/ssp/ssp.tex
@@ -43,6 +43,7 @@  fread           snprintf        vsprintf
 mbstowcs        wcstombs        wctomb
 
 @exdent @emph{System functions:}
-getcwd          read            readlink
+getcwd          read            ttyname_r
+pread           readlink
 
 @end example