diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2001-11-24 21:10:00 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2001-11-24 21:10:00 +0000 |
commit | b0fa0e6e0fa6aa7162e13661eefcda3a7dde3422 (patch) | |
tree | a9fa95a38bcac3d16c6d2084e53e8bac316542d1 /winsup/cygwin/net.cc | |
parent | 28d3cc021d78f7f0867fc7f5f5930369ea94ff5a (diff) | |
download | cygnal-b0fa0e6e0fa6aa7162e13661eefcda3a7dde3422.tar.gz cygnal-b0fa0e6e0fa6aa7162e13661eefcda3a7dde3422.tar.bz2 cygnal-b0fa0e6e0fa6aa7162e13661eefcda3a7dde3422.zip |
* net.cc (cygwin_inet_ntoa): Add parameter checking.
(cygwin_inet_network): Return INADDR_NONE instead of 0 in case of
EFAULT.
(cygwin_hstrerror): Add parameter checking.
(cygwin_rresvport): Ditto.
(socketpair): Ditto.
* winsup.h (check_null_str): Add extern declaration.
Diffstat (limited to 'winsup/cygwin/net.cc')
-rw-r--r-- | winsup/cygwin/net.cc | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/winsup/cygwin/net.cc b/winsup/cygwin/net.cc index 62ba33314..f2259a8ab 100644 --- a/winsup/cygwin/net.cc +++ b/winsup/cygwin/net.cc @@ -206,6 +206,8 @@ cygwin_inet_ntoa (struct in_addr in) extern "C" unsigned long cygwin_inet_addr (const char *cp) { + if (check_null_str_errno (cp)) + return INADDR_NONE; unsigned long res = inet_addr (cp); return res; } @@ -234,7 +236,7 @@ extern "C" unsigned int cygwin_inet_network (const char *cp) { if (check_null_str_errno (cp)) - return 0; + return INADDR_NONE; unsigned int res = inet_network (cp); return res; } @@ -1440,6 +1442,8 @@ cygwin_hstrerror (int err) extern "C" void cygwin_herror (const char *s) { + if (check_null_str (s)) + return; if (cygheap->fdtab.not_open (2)) return; @@ -2229,6 +2233,9 @@ cygwin_rresvport (int *port) int res; sigframe thisframe (mainthread); + if (check_null_invalid_struct_errno (port)) + return -1; + cygheap_fdnew res_fd; if (res_fd < 0) res = -1; @@ -2292,6 +2299,9 @@ socketpair (int, int type, int, int *sb) struct sockaddr_in sock_in; int len = sizeof (sock_in); + if (__check_null_invalid_struct_errno (sb, 2 * sizeof(int))) + return -1; + cygheap_fdnew sb0; if (sb0 < 0) goto done; |