core: replace deprecated gnutls function "gnutls_certificate_client_set_retrieve_function" by new function "gnutls_certificate_set_retrieve_function" (gnutls >= 2.11.0)

This commit is contained in:
Sebastien Helleu 2011-08-26 18:01:33 +02:00
parent 88c58cb1b7
commit 47ac88b3f5
5 changed files with 41 additions and 3 deletions

View File

@ -7,6 +7,9 @@ v0.3.6-dev, 2011-08-26
Version 0.3.6 (under dev!)
--------------------------
* core: replace deprecated gnutls function
"gnutls_certificate_client_set_retrieve_function" by new function
"gnutls_certificate_set_retrieve_function" (gnutls >= 2.11.0)
* core: use dynamic buffer size for calls to vsnprintf
* core: fix memory leak in unhook of hook_connect
* core: fix memory leak in display of empty bar items

View File

@ -1776,7 +1776,11 @@ hook_connect_gnutls_set_certificates (gnutls_session_t tls_session,
const gnutls_datum_t *req_ca, int nreq,
const gnutls_pk_algorithm_t *pk_algos,
int pk_algos_len,
#if LIBGNUTLS_VERSION_NUMBER >= 0x020b00
gnutls_retr2_st *answer)
#else
gnutls_retr_st *answer)
#endif
{
struct t_hook *ptr_hook;
int rc;

View File

@ -213,7 +213,12 @@ typedef int (t_hook_callback_connect)(void *data, int status,
typedef int (gnutls_callback_t)(void *data, gnutls_session_t tls_session,
const gnutls_datum_t *req_ca, int nreq,
const gnutls_pk_algorithm_t *pk_algos,
int pk_algos_len, gnutls_retr_st *answer,
int pk_algos_len,
#if LIBGNUTLS_VERSION_NUMBER >= 0x020b00
gnutls_retr2_st *answer,
#else
gnutls_retr_st *answer,
#endif
int action);
#endif
@ -450,8 +455,12 @@ extern int hook_connect_gnutls_set_certificates (gnutls_session_t tls_session,
const gnutls_datum_t *req_ca, int nreq,
const gnutls_pk_algorithm_t *pk_algos,
int pk_algos_len,
#if LIBGNUTLS_VERSION_NUMBER >= 0x020b00
gnutls_retr2_st *answer);
#else
gnutls_retr_st *answer);
#endif
#endif
extern struct t_hook *hook_print (struct t_weechat_plugin *plugin,
struct t_gui_buffer *buffer,
const char *tags, const char *message,

View File

@ -100,12 +100,20 @@ network_init ()
network_set_gnutls_ca_file ();
#if LIBGNUTLS_VERSION_NUMBER >= 0x02090a
/* for gnutls >= 2.9.10 */
gnutls_certificate_set_verify_function (gnutls_xcred,
&hook_connect_gnutls_verify_certificates);
#endif
#if LIBGNUTLS_VERSION_NUMBER >= 0x020b00
/* for gnutls >= 2.11.0 */
gnutls_certificate_set_retrieve_function (gnutls_xcred,
&hook_connect_gnutls_set_certificates);
#else
/* for gnutls < 2.11.0 */
gnutls_certificate_client_set_retrieve_function (gnutls_xcred,
&hook_connect_gnutls_set_certificates);
#endif
#endif
#ifdef HAVE_GCRYPT
gcry_check_version (GCRYPT_VERSION);
gcry_control (GCRYCTL_DISABLE_SECMEM, 0);

View File

@ -2948,11 +2948,20 @@ int
irc_server_gnutls_callback (void *data, gnutls_session_t tls_session,
const gnutls_datum_t *req_ca, int nreq,
const gnutls_pk_algorithm_t *pk_algos,
int pk_algos_len, gnutls_retr_st *answer,
int pk_algos_len,
#if LIBGNUTLS_VERSION_NUMBER >= 0x020b00
gnutls_retr2_st *answer,
#else
gnutls_retr_st *answer,
#endif
int action)
{
struct t_irc_server *server;
#if LIBGNUTLS_VERSION_NUMBER >= 0x020b00
gnutls_retr2_st tls_struct;
#else
gnutls_retr_st tls_struct;
#endif
gnutls_x509_crt_t cert_temp;
const gnutls_datum_t *cert_list;
gnutls_datum_t filedatum;
@ -3145,7 +3154,12 @@ irc_server_gnutls_callback (void *data, gnutls_session_t tls_session,
}
else
{
#if LIBGNUTLS_VERSION_NUMBER >= 0x020b00
tls_struct.cert_type = GNUTLS_CRT_X509;
#else
tls_struct.type = GNUTLS_CRT_X509;
#endif
tls_struct.ncerts = 1;
tls_struct.deinit_all = 0;
tls_struct.cert.x509 = &server->tls_cert;
@ -3170,7 +3184,7 @@ irc_server_gnutls_callback (void *data, gnutls_session_t tls_session,
gnutls_free (cinfo.data);
}
#endif
memcpy (answer, &tls_struct, sizeof (gnutls_retr_st));
memcpy (answer, &tls_struct, sizeof (tls_struct));
free (cert_str);
}
}