Problem reported for GnuTLS 3.2.1 by Glenn Morris in:
http://lists.gnu.org/archive/html/emacs-devel/2017-07/msg00716.html
http://lists.gnu.org/archive/html/emacs-devel/2017-07/msg00742.html
Although I don't see how this bug can occur with vanilla GnuTLS 3.2.1,
perhaps hydra was using a modified GnuTLS.
* src/gnutls.c (Fgnutls_ciphers): Don't assume GNUTLS_CIPHER_NULL
is at the end of the list returned by gnutls_cipher_list,
or that the earlier ciphers all have non-null names.
#ifdef HAVE_GNUTLS3_CIPHER
const gnutls_cipher_algorithm_t *gciphers = gnutls_cipher_list ();
- for (ptrdiff_t pos = 0; gciphers[pos] != GNUTLS_CIPHER_NULL; pos++)
+ for (ptrdiff_t pos = 0; gciphers[pos] != 0; pos++)
{
gnutls_cipher_algorithm_t gca = gciphers[pos];
+ if (gca == GNUTLS_CIPHER_NULL)
+ continue;
+ char const *cipher_name = gnutls_cipher_get_name (gca);
+ if (!cipher_name)
+ continue;
/* A symbol representing the GnuTLS cipher. */
- Lisp_Object cipher_symbol = intern (gnutls_cipher_get_name (gca));
+ Lisp_Object cipher_symbol = intern (cipher_name);
ptrdiff_t cipher_tag_size = gnutls_cipher_get_tag_size (gca);