mirror of
git://anongit.mindrot.org/openssh.git
synced 2024-12-03 03:23:23 +08:00
703b98a267
[openbsd-compat/openbsd-compat.h] Kludge around bad glibc _FORTIFY_SOURCE check that doesn't grok heap-allocated fd_sets; ok dtucker@
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 */
|
|
|