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:
parent
5318c49833
commit
6fdd213161
@ -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.
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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)))
|
||||
|
Loading…
x
Reference in New Issue
Block a user