1234567891011121314151617181920212223242526272829 |
- /* 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 */
|