[gnutls-dev] GNUTLS_E_INTERNAL_ERROR in _gnutls_ciphertext2compressed

Tim Kosse tim.kosse at filezilla-project.org
Tue Nov 13 16:47:08 CET 2007


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

I've got several reports of failing connections with
GNUTLS_E_INTERNAL_ERROR.

I could track this problem down to the end of
_gnutls_ciphertext2compressed in gnutls_cipher.cpp:

if (compress_size < length) return GNUTLS_E_INTERNAL_ERROR

In all these cases, compress_size was 16284. Length was slightly larger
by various amounts. For example 16394 was a value I could frequently
observe.

I've noticed that in get_temp_recv_buffer, the buffer gets allocated
with MAX_RECORD_RECV_SIZE bytes.

_gnutls_decompress in gnutls_compress_int.c however checks for
(compress_size > max_record_size + EXTRA_COMP_SIZE).

So shouldn't get_temp_recv_buffer allocate MAX_RECORD_RECV_SIZE +
EXTRA_COMP_SIZE?

Doing so fixed this issue in my case, though I've no idea if that's proper.

Regards,
Tim Kosse
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFHOcb88N9+lcqiUkURAvppAJ9E87LPMXsQeHfg2i+SW1RB99NoAACg9oxP
i0jT/tXSl+Sv1wgC6ai/QkA=
=mgHk
-----END PGP SIGNATURE-----



More information about the Gnutls-dev mailing list