mirror of git://anongit.mindrot.org/openssh.git
29 lines
882 B
C
29 lines
882 B
C
|
/* Placed in the public domain. */
|
||
|
|
||
|
/*
|
||
|
* _FORTIFY_SOURCE includes a misguided check for FD_SET(n)/FD_ISSET(b)
|
||
|
* where n > FD_SETSIZE. This breaks OpenSSH and other programs that
|
||
|
* explicitly allocate fd_sets. To avoid this, we wrap FD_SET in a
|
||
|
* function compiled without _FORTIFY_SOURCE.
|
||
|
*/
|
||
|
|
||
|
#include "config.h"
|
||
|
|
||
|
#if defined(HAVE_FEATURES_H) && defined(_FORTIFY_SOURCE)
|
||
|
# include <features.h>
|
||
|
# if defined(__GNU_LIBRARY__) && defined(__GLIBC_PREREQ)
|
||
|
# if __GLIBC_PREREQ(2, 15) && (_FORTIFY_SOURCE > 0)
|
||
|
# undef _FORTIFY_SOURCE
|
||
|
# undef __USE_FORTIFY_LEVEL
|
||
|
# include <sys/socket.h>
|
||
|
void kludge_FD_SET(int n, fd_set *set) {
|
||
|
FD_SET(n, set);
|
||
|
}
|
||
|
int kludge_FD_ISSET(int n, fd_set *set) {
|
||
|
return FD_ISSET(n, set);
|
||
|
}
|
||
|
# endif /* __GLIBC_PREREQ(2, 15) && (_FORTIFY_SOURCE > 0) */
|
||
|
# endif /* __GNU_LIBRARY__ && __GLIBC_PREREQ */
|
||
|
#endif /* HAVE_FEATURES_H && _FORTIFY_SOURCE */
|
||
|
|