From b283c603b546f678c3eb7d31b06c28b7da285962 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Wed, 3 Aug 2016 04:33:21 -0400 Subject: [PATCH 1/2] Require GnuTLS 2.12.2 or later MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * configure.ac, etc/NEWS: Require GnuTLS 2.12.2 or later, instead of merely 2.6.6 or later (Bug#23982#20). * src/gnutls.c (init_gnutls_functions, emacs_gnutls_handshake) [WINDOWSNT]: Don’t bother with gnutls_check_version or gnutls_transport_set_lowat, as they are no longer needed now that we require gnutls 2.12.2 or later. --- configure.ac | 2 +- etc/NEWS | 3 +++ src/gnutls.c | 23 ----------------------- 3 files changed, 4 insertions(+), 24 deletions(-) diff --git a/configure.ac b/configure.ac index cca555c..e8aeae2 100644 --- a/configure.ac +++ b/configure.ac @@ -2748,7 +2748,7 @@ AC_DEFUN HAVE_GNUTLS=no if test "${with_gnutls}" = "yes" ; then - EMACS_CHECK_MODULES([LIBGNUTLS], [gnutls >= 2.6.6], + EMACS_CHECK_MODULES([LIBGNUTLS], [gnutls >= 2.12.2], [HAVE_GNUTLS=yes], [HAVE_GNUTLS=no]) if test "${HAVE_GNUTLS}" = "yes"; then AC_DEFINE(HAVE_GNUTLS, 1, [Define if using GnuTLS.]) diff --git a/etc/NEWS b/etc/NEWS index 6462eff..fadf4c2 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -28,6 +28,9 @@ otherwise leave it unmarked. ** By default libgnutls is now required when building Emacs. Use 'configure --with-gnutls=no' to build even when GnuTLS is missing. +** GnuTLS version 2.12.2 or later is now required, instead of merely +version 2.6.6 or later. + ** The new option 'configure --enable-gcc-warnings=warn-only' causes GCC to issue warnings without stopping the build. This behavior is now the default in developer builds. As before, use diff --git a/src/gnutls.c b/src/gnutls.c index 7f05ac4..681e298 100644 --- a/src/gnutls.c +++ b/src/gnutls.c @@ -110,8 +110,6 @@ DEF_DLL_FN (ssize_t, gnutls_record_send, (gnutls_session_t, const void *, size_t)); DEF_DLL_FN (const char *, gnutls_strerror, (int)); DEF_DLL_FN (void, gnutls_transport_set_errno, (gnutls_session_t, int)); -DEF_DLL_FN (const char *, gnutls_check_version, (const char *)); -DEF_DLL_FN (void, gnutls_transport_set_lowat, (gnutls_session_t, int)); DEF_DLL_FN (void, gnutls_transport_set_ptr2, (gnutls_session_t, gnutls_transport_ptr_t, gnutls_transport_ptr_t)); @@ -225,11 +223,6 @@ init_gnutls_functions (void) LOAD_DLL_FN (library, gnutls_record_send); LOAD_DLL_FN (library, gnutls_strerror); LOAD_DLL_FN (library, gnutls_transport_set_errno); - LOAD_DLL_FN (library, gnutls_check_version); - /* We don't need to call gnutls_transport_set_lowat in GnuTLS 2.11.1 - and later, and the function was removed entirely in 3.0.0. */ - if (!fn_gnutls_check_version ("2.11.1")) - LOAD_DLL_FN (library, gnutls_transport_set_lowat); LOAD_DLL_FN (library, gnutls_transport_set_ptr2); LOAD_DLL_FN (library, gnutls_transport_set_pull_function); LOAD_DLL_FN (library, gnutls_transport_set_push_function); @@ -290,7 +283,6 @@ init_gnutls_functions (void) # define gnutls_certificate_set_x509_trust_file fn_gnutls_certificate_set_x509_trust_file # define gnutls_certificate_type_get fn_gnutls_certificate_type_get # define gnutls_certificate_verify_peers2 fn_gnutls_certificate_verify_peers2 -# define gnutls_check_version fn_gnutls_check_version # define gnutls_cipher_get fn_gnutls_cipher_get # define gnutls_cipher_get_name fn_gnutls_cipher_get_name # define gnutls_credentials_set fn_gnutls_credentials_set @@ -321,7 +313,6 @@ init_gnutls_functions (void) # define gnutls_sign_get_name fn_gnutls_sign_get_name # define gnutls_strerror fn_gnutls_strerror # define gnutls_transport_set_errno fn_gnutls_transport_set_errno -# define gnutls_transport_set_lowat fn_gnutls_transport_set_lowat # define gnutls_transport_set_ptr2 fn_gnutls_transport_set_ptr2 # define gnutls_transport_set_pull_function fn_gnutls_transport_set_pull_function # define gnutls_transport_set_push_function fn_gnutls_transport_set_push_function @@ -439,20 +430,6 @@ emacs_gnutls_handshake (struct Lisp_Process *proc) (gnutls_transport_ptr_t) proc); gnutls_transport_set_push_function (state, &emacs_gnutls_push); gnutls_transport_set_pull_function (state, &emacs_gnutls_pull); - - /* For non blocking sockets or other custom made pull/push - functions the gnutls_transport_set_lowat must be called, with - a zero low water mark value. (GnuTLS 2.10.4 documentation) - - (Note: this is probably not strictly necessary as the lowat - value is only used when no custom pull/push functions are - set.) */ - /* According to GnuTLS NEWS file, lowat level has been set to - zero by default in version 2.11.1, and the function - gnutls_transport_set_lowat was removed from the library in - version 2.99.0. */ - if (!gnutls_check_version ("2.11.1")) - gnutls_transport_set_lowat (state, 0); #else /* This is how GnuTLS takes sockets: as file descriptors passed in. For an Emacs process socket, infd and outfd are the -- 2.5.5