4
0
mirror of git://sourceware.org/git/newlib-cygwin.git synced 2025-02-19 07:22:14 +08:00

* miscfuncs.cc (+__check_invalid_read_ptr_errno): New function.

* syscalls.c (_write): Validate that write buffer is accessible for reading,
not writing.
* winsup.h: Declare new function, increase regparmization of check_* functions.
This commit is contained in:
Christopher Faylor 2001-10-20 05:08:21 +00:00
parent 5318c49833
commit 6fdd213161
4 changed files with 21 additions and 3 deletions

View File

@ -1,3 +1,11 @@
2001-10-20 Christopher Faylor <cgf@redhat.com>
* miscfuncs.cc (+__check_invalid_read_ptr_errno): New function.
* syscalls.c (_write): Validate that write buffer is accessible for
reading, not writing.
* winsup.h: Declare new function, increase regparmization of check_*
functions.
2001-10-19 Corinna Vinschen <corinna@vinschen.de>
* path.cc (getcwd): Allow len == 0 when buf == NULL.

View File

@ -153,3 +153,12 @@ __check_null_invalid_struct_errno (const void *s, unsigned sz)
set_errno (__err);
return __err;
}
int __stdcall
__check_invalid_read_ptr_errno (const void *s, unsigned sz)
{
if (!s || IsBadReadPtr ((void *) s, sz))
set_errno (EFAULT);
return 0;
}

View File

@ -344,7 +344,7 @@ _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))
if (__check_invalid_read_ptr_errno (ptr, len))
return -1;
int res = -1;

View File

@ -191,8 +191,9 @@ void set_console_handler ();
int __stdcall check_null_empty_str (const char *name) __attribute__ ((regparm(1)));
int __stdcall check_null_empty_str_errno (const char *name) __attribute__ ((regparm(1)));
int __stdcall __check_null_invalid_struct (const void *s, unsigned sz) __attribute__ ((regparm(1)));
int __stdcall __check_null_invalid_struct_errno (const void *s, unsigned sz) __attribute__ ((regparm(1)));
int __stdcall __check_null_invalid_struct (const void *s, unsigned sz) __attribute__ ((regparm(2)));
int __stdcall __check_null_invalid_struct_errno (const void *s, unsigned sz) __attribute__ ((regparm(2)));
int __stdcall __check_invalid_read_ptr_errno (const void *s, unsigned sz) __attribute__ ((regparm(2)));
#define check_null_invalid_struct(s) \
__check_null_invalid ((s), sizeof (*(s)))