mirror of
git://anongit.mindrot.org/openssh.git
synced 2024-12-22 01:50:16 +00:00
- (djm) [openbsd-compat/Makefile.in openbsd-compat/kludge-fd_set.c]
[openbsd-compat/openbsd-compat.h] Kludge around bad glibc _FORTIFY_SOURCE check that doesn't grok heap-allocated fd_sets; ok dtucker@
This commit is contained in:
parent
0fa0ed061b
commit
703b98a267
@ -1,3 +1,9 @@
|
||||
20141001
|
||||
- (djm) [openbsd-compat/Makefile.in openbsd-compat/kludge-fd_set.c]
|
||||
[openbsd-compat/openbsd-compat.h] Kludge around bad glibc
|
||||
_FORTIFY_SOURCE check that doesn't grok heap-allocated fd_sets;
|
||||
ok dtucker@
|
||||
|
||||
20140910
|
||||
- (djm) [sandbox-seccomp-filter.c] Allow mremap and exit for DietLibc;
|
||||
patch from Felix von Leitner; ok dtucker
|
||||
|
@ -1,4 +1,4 @@
|
||||
# $Id: Makefile.in,v 1.55 2014/02/04 00:37:50 djm Exp $
|
||||
# $Id: Makefile.in,v 1.56 2014/09/30 23:43:08 djm Exp $
|
||||
|
||||
sysconfdir=@sysconfdir@
|
||||
piddir=@piddir@
|
||||
@ -18,7 +18,7 @@ LDFLAGS=-L. @LDFLAGS@
|
||||
|
||||
OPENBSD=base64.o basename.o bcrypt_pbkdf.o bindresvport.o blowfish.o daemon.o dirname.o fmt_scaled.o getcwd.o getgrouplist.o getopt_long.o getrrsetbyname.o glob.o inet_aton.o inet_ntoa.o inet_ntop.o mktemp.o pwcache.o readpassphrase.o realpath.o rresvport.o setenv.o setproctitle.o sha2.o sigact.o strlcat.o strlcpy.o strmode.o strnlen.o strptime.o strsep.o strtonum.o strtoll.o strtoul.o strtoull.o timingsafe_bcmp.o vis.o blowfish.o bcrypt_pbkdf.o explicit_bzero.o
|
||||
|
||||
COMPAT=arc4random.o bsd-asprintf.o bsd-closefrom.o bsd-cray.o bsd-cygwin_util.o bsd-getpeereid.o getrrsetbyname-ldns.o bsd-misc.o bsd-nextstep.o bsd-openpty.o bsd-poll.o bsd-setres_id.o bsd-snprintf.o bsd-statvfs.o bsd-waitpid.o fake-rfc2553.o openssl-compat.o xmmap.o xcrypt.o
|
||||
COMPAT=arc4random.o bsd-asprintf.o bsd-closefrom.o bsd-cray.o bsd-cygwin_util.o bsd-getpeereid.o getrrsetbyname-ldns.o bsd-misc.o bsd-nextstep.o bsd-openpty.o bsd-poll.o bsd-setres_id.o bsd-snprintf.o bsd-statvfs.o bsd-waitpid.o fake-rfc2553.o openssl-compat.o xmmap.o xcrypt.o kludge-fd_set.o
|
||||
|
||||
PORTS=port-aix.o port-irix.o port-linux.o port-solaris.o port-tun.o port-uw.o
|
||||
|
||||
|
28
openbsd-compat/kludge-fd_set.c
Normal file
28
openbsd-compat/kludge-fd_set.c
Normal file
@ -0,0 +1,28 @@
|
||||
/* 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 */
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $Id: openbsd-compat.h,v 1.61 2014/02/04 00:18:23 djm Exp $ */
|
||||
/* $Id: openbsd-compat.h,v 1.62 2014/09/30 23:43:08 djm Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1999-2003 Damien Miller. All rights reserved.
|
||||
@ -268,4 +268,20 @@ char *shadow_pw(struct passwd *pw);
|
||||
#include "port-tun.h"
|
||||
#include "port-uw.h"
|
||||
|
||||
/* _FORTIFY_SOURCE breaks FD_ISSET(n)/FD_SET(n) for n > FD_SETSIZE. Avoid. */
|
||||
#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)
|
||||
# include <sys/socket.h> /* Ensure include guard is defined */
|
||||
# undef FD_SET
|
||||
# undef FD_ISSET
|
||||
# define FD_SET(n, set) kludge_FD_SET(n, set)
|
||||
# define FD_ISSET(n, set) kludge_FD_ISSET(n, set)
|
||||
void kludge_FD_SET(int, fd_set *);
|
||||
int kludge_FD_ISSET(int, fd_set *);
|
||||
# endif /* __GLIBC_PREREQ(2, 15) && (_FORTIFY_SOURCE > 0) */
|
||||
# endif /* __GNU_LIBRARY__ && __GLIBC_PREREQ */
|
||||
#endif /* HAVE_FEATURES_H && _FORTIFY_SOURCE */
|
||||
|
||||
#endif /* _OPENBSD_COMPAT_H */
|
||||
|
Loading…
Reference in New Issue
Block a user