diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2004-02-25 10:54:31 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2004-02-25 10:54:31 +0000 |
commit | f9e19c093165d7c75bd9d04204845ed53b8ff0a8 (patch) | |
tree | c304787dfc61ebfc61735536a8d101caf3def7aa /winsup/cygwin/miscfuncs.cc | |
parent | 241f503c759b2bcfb0ae47110a59389a2dee5cfc (diff) | |
download | cygnal-f9e19c093165d7c75bd9d04204845ed53b8ff0a8.tar.gz cygnal-f9e19c093165d7c75bd9d04204845ed53b8ff0a8.tar.bz2 cygnal-f9e19c093165d7c75bd9d04204845ed53b8ff0a8.zip |
* miscfuncs.cc (check_invalid_virtual_addr): New function.
* winsup.h (check_invalid_virtual_addr): Declare.
* mmap.cc (munmap): Call check_invalid_virtual_addr instead of
IsBadReadPtr.
Diffstat (limited to 'winsup/cygwin/miscfuncs.cc')
-rw-r--r-- | winsup/cygwin/miscfuncs.cc | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/winsup/cygwin/miscfuncs.cc b/winsup/cygwin/miscfuncs.cc index 4207c4d1a..7947365f4 100644 --- a/winsup/cygwin/miscfuncs.cc +++ b/winsup/cygwin/miscfuncs.cc @@ -214,6 +214,18 @@ __check_invalid_read_ptr_errno (const void *s, unsigned sz) return set_errno (EFAULT); } +int __stdcall +check_invalid_virtual_addr (const void *s, unsigned sz) +{ + MEMORY_BASIC_INFORMATION mbuf; + void *end; + + for (end = (char *) s + sz; s < end; s = (char *) s + mbuf.RegionSize) + if (!VirtualQuery (s, &mbuf, sizeof mbuf)) + return EINVAL; + return 0; +} + ssize_t check_iovec_for_read (const struct iovec *iov, int iovcnt) { |