diff options
Diffstat (limited to 'tcpd')
| -rw-r--r-- | tcpd/configure.ac | 113 | ||||
| -rw-r--r-- | tcpd/libcouriertls.c | 22 | ||||
| -rw-r--r-- | tcpd/starttls.c | 7 | ||||
| -rw-r--r-- | tcpd/tcpd.c | 17 |
4 files changed, 78 insertions, 81 deletions
diff --git a/tcpd/configure.ac b/tcpd/configure.ac index 2a42428..f371819 100644 --- a/tcpd/configure.ac +++ b/tcpd/configure.ac @@ -3,7 +3,7 @@ dnl dnl Copyright 1998 - 2008 Double Precision, Inc. See COPYING for dnl distribution information. -AC_INIT(couriertcpd, 0.11, [courier-users@lists.sourceforge.net]) +AC_INIT([couriertcpd],[0.11],[courier-users@lists.sourceforge.net]) >confdefs.h # Kill PACKAGE_ macros @@ -15,11 +15,9 @@ AC_CONFIG_HEADERS(config.h) dnl Checks for programs. AC_PROG_CC -AC_PROG_CC_C99 AC_PROG_INSTALL AC_PROG_LN_S -AC_LIBTOOL_DLOPEN -AM_PROG_LIBTOOL +LT_INIT SPATH="$LPATH:/usr/kerberos/bin" @@ -127,16 +125,22 @@ fi AC_SUBST(NETLIBS) dnl Checks for header files. -AC_HEADER_STDC + AC_HEADER_DIRENT AC_CHECK_HEADERS(sys/types.h sys/time.h sys/stat.h sys/wait.h sys/select.h unistd.h fcntl.h sys/ioctl.h) -AC_HEADER_TIME +AC_CHECK_HEADERS_ONCE([sys/time.h]) +# Obsolete code to be removed. +if test $ac_cv_header_sys_time_h = yes; then + AC_DEFINE([TIME_WITH_SYS_TIME],[1],[Define to 1 if you can safely include both <sys/time.h> + and <time.h>. This macro is obsolete.]) +fi +# End of obsolete code. + dnl Checks for typedefs, structures, and compiler characteristics. -AC_PID_T +AC_TYPE_PID_T AC_TYPE_UID_T -AC_TYPE_SIGNAL AC_SYS_LARGEFILE AC_CACHE_CHECK([for socklen_t], @@ -202,21 +206,20 @@ AC_ARG_WITH(spipe, spipe="$withval", spipe="") AC_CACHE_CHECK([for SVR3 stream pipes],tcpd_cv_svr3, -AC_TRY_COMPILE( [ +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <sys/types.h> #include <sys/stream.h> #include <stropts.h> #include <fcntl.h> -],[ { +]], [[ { (void)(sizeof(struct strfdinsert) + sizeof(queue_t) + I_FDINSERT) } -], tcpd_cv_svr3=yes, tcpd_cv_svr3=no)) +]])],[tcpd_cv_svr3=yes],[tcpd_cv_svr3=no])) AC_CACHE_CHECK( [for SVR4 stream pipes],tcpd_cv_svr4, -AC_TRY_RUN( -[ +AC_RUN_IFELSE([AC_LANG_SOURCE([[ changequote(<<,>>) @@ -241,11 +244,8 @@ char c; return (1); } changequote([,]) -] -, -tcpd_cv_svr4=yes, -tcpd_cv_svr4=no, -tcpd_cv_svr4="n/a") + +]])],[tcpd_cv_svr4=yes],[tcpd_cv_svr4=no],[tcpd_cv_svr4="n/a"]) ) @@ -326,20 +326,18 @@ then if test "$KRB5CONFIG" != "krb5-config" then AC_MSG_CHECKING(whether OpenSSL requires Kerberos) - AC_TRY_COMPILE( [ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <openssl/ssl.h> -], [ ], :, - [ +]], [[ ]])],[:],[ KRBFLAGS=`$KRB5CONFIG --cflags` CFLAGS="$CFLAGS $KRBFLAGS" - AC_TRY_COMPILE( [ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <openssl/ssl.h> -], [ ], [ KRBLIBS="`$KRB5CONFIG --libs`" ], - AC_MSG_ERROR(OpenSSL test build failed) ) - ] -) +]], [[ ]])],[ KRBLIBS="`$KRB5CONFIG --libs`" ],[AC_MSG_ERROR(OpenSSL test build failed) ]) + +]) if test "$KRBLIBS" = "" then @@ -364,15 +362,11 @@ then save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS `$PKG_CONFIG --cflags gnutls`" - AC_TRY_COMPILE( [ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <gnutls/gnutls.h> -], - [ - ], - [ have_gnutls=yes - ], - - [ +]], [[ + ]])],[ have_gnutls=yes + ],[ have_gnutls="no: \#include <gnutls/gnutls.h> failed" ]) @@ -471,17 +465,17 @@ then save_LIBS="$LIBS" LIBS="$LIBS -lgcrypt" - AC_TRY_LINK( [ + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ #include <gcrypt.h> -], [ +]], [[ gcry_cipher_open(NULL, 0, 0, 0); -], [ +]])],[ AC_MSG_RESULT(yes) AC_DEFINE_UNQUOTED(HAVE_GCRYPT, 1, [ Whether libgcrypt is installed ]) CRYPTLIBS="$CRYPTLIBS -lgcrypt" -], [ +],[ AC_MSG_RESULT(no) have_gcrypt="no" ]) @@ -492,15 +486,15 @@ have_gcrypt="no" fi AC_MSG_CHECKING([for libgpg-error]) LIBS="$LIBS -lgpg-error" - AC_TRY_LINK( [ + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ #include <gcrypt.h> -], [ +]], [[ gpg_err_code_from_errno(0); -], [ +]])],[ AC_MSG_RESULT(yes) CRYPTLIBS="$CRYPTLIBS -lgpg-error" -], [ +],[ AC_MSG_RESULT(no) ]) @@ -514,12 +508,12 @@ else save_LIBS="$LIBS" LIBS="-lcrypto $KRBLIBS $LIBS" + AC_CHECK_FUNCS(PEM_read_bio_Parameters_ex) AC_MSG_CHECKING(for OpenSSL 0.9.7) - AC_TRY_LINK( [ + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ #include <openssl/evp.h> #include <openssl/rand.h> -], -[ +]], [[ EVP_CIPHER_CTX ctx; char dummy[1]; unsigned char a[1], b[1]; @@ -528,22 +522,21 @@ EVP_CIPHER_CTX_init(&ctx); EVP_EncryptInit_ex(&ctx, EVP_des_cbc(), NULL, a, b); RAND_pseudo_bytes(dummy, 1); -], [ +]])],[ CRYPTLIBS="-lcrypto $KRBLIBS" AC_MSG_RESULT(yes) AC_DEFINE_UNQUOTED(HAVE_OPENSSL097, 1, [ Whether OpenSSL 0.9.7 is installed ]) -], [ +],[ AC_MSG_RESULT(no) AC_MSG_CHECKING(for OpenSSL 1.1.0) - AC_TRY_LINK( [ + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ #include <openssl/evp.h> #include <openssl/rand.h> -], -[ +]], [[ unsigned char dummy[1]; unsigned char a[1], b[1]; @@ -551,31 +544,30 @@ EVP_CIPHER_CTX *ctx=EVP_CIPHER_CTX_new(); EVP_EncryptInit_ex(ctx, EVP_des_cbc(), NULL, a, b); RAND_bytes(dummy, 1); -], [ +]])],[ CRYPTLIBS="-lcrypto $KRBLIBS" AC_MSG_RESULT(yes) AC_DEFINE_UNQUOTED(HAVE_OPENSSL110, 1, [ Whether OpenSSL 1.1.0 is installed ]) -], [ +],[ AC_MSG_RESULT(no) ]) -] -) + +]) LIBS="-lssl $LIBS" AC_CHECK_FUNCS(TLSv1_1_method TLSv1_2_method X509_VERIFY_PARAM_set1_host) LIBS="$save_LIBS" - AC_TRY_COMPILE( [ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <openssl/ssl.h> SSL *p; -], -[ +]], [[ (void)SSL_get_servername(p, TLSEXT_NAMETYPE_host_name); -], [ +]])],[ AC_DEFINE_UNQUOTED(HAVE_OPENSSL_SNI,1,[ Whether OpenSSL supports SNI ]) - ]) + ],[]) TLSLIBRARY="$LIBCOURIERTLSOPENSSL" STARTTLS=couriertls$EXEEXT @@ -610,4 +602,5 @@ AC_SUBST(BUILDLIBCOURIERTLS) AC_SUBST(TLSLIBRARY) AM_CONDITIONAL(HAVE_SGML, test -d ${srcdir}/../docbook) -AC_OUTPUT(Makefile) +AC_CONFIG_FILES([Makefile]) +AC_OUTPUT diff --git a/tcpd/libcouriertls.c b/tcpd/libcouriertls.c index 7c42f19..9c2847a 100644 --- a/tcpd/libcouriertls.c +++ b/tcpd/libcouriertls.c @@ -409,19 +409,39 @@ static void load_dh_params(SSL_CTX *ctx, const char *filename, const struct tls_info *info=SSL_CTX_get_app_data(ctx); BIO *bio; - DH *dh; if (*cert_file_flags) return; if ((bio=BIO_new_file(filename, "r")) != 0) { +#if HAVE_PEM_READ_BIO_PARAMETERS_EX + + OSSL_LIB_CTX *libctx=OSSL_LIB_CTX_get0_global_default(); + + EVP_PKEY *pkey=PEM_read_bio_Parameters_ex(bio, NULL, libctx, + NULL); + + if (pkey) + { + if (EVP_PKEY_is_a(pkey, "DH")) + { + SSL_CTX_set0_tmp_dh_pkey(ctx, pkey); + *cert_file_flags = 1; + } + EVP_PKEY_free(pkey); + } + +#else + DH *dh; + if ((dh=PEM_read_bio_DHparams(bio, NULL, NULL, NULL)) != 0) { SSL_CTX_set_tmp_dh(ctx, dh); *cert_file_flags = 1; DH_free(dh); } +#endif else { /* diff --git a/tcpd/starttls.c b/tcpd/starttls.c index 6e6229b..9a3b18f 100644 --- a/tcpd/starttls.c +++ b/tcpd/starttls.c @@ -53,16 +53,11 @@ #include <sys/socket.h> #include <arpa/inet.h> -#if TIME_WITH_SYS_TIME -#include <sys/time.h> #include <time.h> -#else #if HAVE_SYS_TIME_H #include <sys/time.h> -#else -#include <time.h> -#endif #endif + #include <locale.h> diff --git a/tcpd/tcpd.c b/tcpd/tcpd.c index 7cd3afa..55f1111 100644 --- a/tcpd/tcpd.c +++ b/tcpd/tcpd.c @@ -245,25 +245,17 @@ static int isid(const char *p) return (1); } -static RETSIGTYPE sigexit(int n) +static void sigexit(int n) { kill( -getpid(), SIGTERM); _exit(0); - -#if RETSIGTYPE != void - return (0) -#endif } -static RETSIGTYPE sighup(int n) +static void sighup(int n) { sighup_received=1; signal(SIGHUP, sighup); - -#if RETSIGTYPE != void - return (0) -#endif } /* @@ -893,13 +885,10 @@ int n; } } -static RETSIGTYPE childsig(int signum) +static void childsig(int signum) { signum=signum; wait_reap(doreap, childsig); -#if RETSIGTYPE != void - return (0); -#endif } static int doallowaccess(char *, int); |
