Hi, the attached patch fixes session resumption if linked against GnuTLS: gnutls_session_get_data can return GNUTLS_E_SHORT_MEMORY_BUFFER even if passed a NULL buffer.
Without this patch, lftp cannot list directories or transfer files on FTP servers that require session resumption on the data connection as security measure, e.g. if using the latest ProFTPD without NoSessionReuseRequired set. Without the patch connections fail with "425 Unable to build data connection: Operation not permitted" due to the session not being resumed. Regards, Tim Kosse
diff --git a/src/lftp_ssl.cc b/src/lftp_ssl.cc index 100b90b..57251ad 100644 --- a/src/lftp_ssl.cc +++ b/src/lftp_ssl.cc @@ -610,7 +610,8 @@ void lftp_ssl_gnutls::copy_sid(const lftp_ssl_gnutls *o) { size_t session_data_size; void *session_data; - if(gnutls_session_get_data(o->session,NULL,&session_data_size)!=GNUTLS_E_SUCCESS) + int res=gnutls_session_get_data(o->session,NULL,&session_data_size); + if(res!=GNUTLS_E_SUCCESS && res!=GNUTLS_E_SHORT_MEMORY_BUFFER) return; session_data=xmalloc(session_data_size); if(gnutls_session_get_data(o->session,session_data,&session_data_size)!=GNUTLS_E_SUCCESS)
signature.asc
Description: OpenPGP digital signature
_______________________________________________ lftp-devel mailing list lftp-devel@uniyar.ac.ru http://univ.uniyar.ac.ru/mailman/listinfo/lftp-devel