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 --- |