Deleted Added
full compact
workarounds.c (44744) workarounds.c (56977)
1 /*
2 * Workarounds for known system software bugs. This module provides wrappers
3 * around library functions and system calls that are known to have problems
4 * on some systems. Most of these workarounds won't do any harm on regular
5 * systems.
6 *
7 * Author: Wietse Venema, Eindhoven University of Technology, The Netherlands.
1 /*
2 * Workarounds for known system software bugs. This module provides wrappers
3 * around library functions and system calls that are known to have problems
4 * on some systems. Most of these workarounds won't do any harm on regular
5 * systems.
6 *
7 * Author: Wietse Venema, Eindhoven University of Technology, The Netherlands.
8 *
9 * $FreeBSD: head/contrib/tcp_wrappers/workarounds.c 56977 2000-02-03 10:27:03Z shin $
8 */
9
10#ifndef lint
11char sccsid[] = "@(#) workarounds.c 1.6 96/03/19 16:22:25";
12#endif
13
14#include <sys/types.h>
15#include <sys/param.h>

--- 145 unchanged lines hidden (view full) ---

161#undef getpeername
162
163int fix_getpeername(sock, sa, len)
164int sock;
165struct sockaddr *sa;
166int *len;
167{
168 int ret;
10 */
11
12#ifndef lint
13char sccsid[] = "@(#) workarounds.c 1.6 96/03/19 16:22:25";
14#endif
15
16#include <sys/types.h>
17#include <sys/param.h>

--- 145 unchanged lines hidden (view full) ---

163#undef getpeername
164
165int fix_getpeername(sock, sa, len)
166int sock;
167struct sockaddr *sa;
168int *len;
169{
170 int ret;
171#ifdef INET6
172 struct sockaddr *sin = sa;
173#else
169 struct sockaddr_in *sin = (struct sockaddr_in *) sa;
174 struct sockaddr_in *sin = (struct sockaddr_in *) sa;
175#endif
170
171 if ((ret = getpeername(sock, sa, len)) >= 0
176
177 if ((ret = getpeername(sock, sa, len)) >= 0
178#ifdef INET6
179 && ((sin->su_si.si_family == AF_INET6
180 && IN6_IS_ADDR_UNSPECIFIED(&sin->su_sin6.sin6_addr))
181 || (sin->su_si.si_family == AF_INET
182 && sin->su_sin.sin_addr.s_addr == 0))) {
183#else
172 && sa->sa_family == AF_INET
173 && sin->sin_addr.s_addr == 0) {
184 && sa->sa_family == AF_INET
185 && sin->sin_addr.s_addr == 0) {
186#endif
174 errno = ENOTCONN;
175 return (-1);
176 } else {
177 return (ret);
178 }
179}
180
181#endif /* GETPEERNAME_BUG */

--- 127 unchanged lines hidden ---
187 errno = ENOTCONN;
188 return (-1);
189 } else {
190 return (ret);
191 }
192}
193
194#endif /* GETPEERNAME_BUG */

--- 127 unchanged lines hidden ---