From: Christopher Faylor Date: Fri, 19 Oct 2001 02:27:19 +0000 (+0000) Subject: * syscalls.cc (_read): Validate input pointer. X-Git-Tag: cygnus_cvs_20020108_pre~291 X-Git-Url: https://sourceware.org/git/?a=commitdiff_plain;h=da8f3291d1d4f5bd77e057cd75ae1c7e2de0ffb5;p=newlib-cygwin.git * syscalls.cc (_read): Validate input pointer. (_write): Ditto. (system): Ditto. --- diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 15f55fa2c..5a8ed18f4 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,9 @@ +2001-10-18 Christopher Faylor + + * syscalls.cc (_read): Validate input pointer. + (_write): Ditto. + (system): Ditto. + 2001-10-16 Frederic Devernay * poll.cc (poll): Call cygwin_select() if any fd is valid. diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index 3224de358..70d66dd59 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -287,6 +287,9 @@ setsid (void) extern "C" ssize_t _read (int fd, void *ptr, size_t len) { + if (__check_null_invalid_struct_errno (ptr, len)) + return -1; + int res; extern int sigcatchers; int e = get_errno (); @@ -341,9 +344,12 @@ _read (int fd, void *ptr, size_t len) extern "C" ssize_t _write (int fd, const void *ptr, size_t len) { + if (__check_null_invalid_struct_errno (ptr, len)) + return -1; + int res = -1; - sigframe thisframe (mainthread); + sigframe thisframe (mainthread); cygheap_fdget cfd (fd); if (cfd < 0) goto done; @@ -1245,6 +1251,9 @@ done: extern "C" int system (const char *cmdstring) { + if (check_null_empty_str_errno (cmdstring)) + return -1; + sigframe thisframe (mainthread); int res; const char* command[4];