Sophie

Sophie

distrib > Fedora > 14 > i386 > by-pkgid > a673281f2bc7740d60107a59e43bd3b8 > files > 2

libgadu-1.11.0-2.fc14.src.rpm

diff -up libgadu-1.11.0/src/events.c.r1144 libgadu-1.11.0/src/events.c
--- libgadu-1.11.0/src/events.c.r1144	2011-05-29 13:41:30.000000000 +0200
+++ libgadu-1.11.0/src/events.c	2011-07-12 21:49:57.000000000 +0200
@@ -810,14 +810,14 @@ gnutls_handshake_repeat:
 				const gnutls_datum_t *peers;
 				gnutls_x509_crt_t cert;
 
-				if (gnutls_x509_crt_init(&cert) >= 0) {
+				if (gnutls_x509_crt_init(&cert) == 0) {
 					peers = gnutls_certificate_get_peers(GG_SESSION_GNUTLS(sess), &peer_count);
 
 					if (peers != NULL) {
 						char buf[256];
 						size_t size;
 
-						if (gnutls_x509_crt_import(cert, &peers[0], GNUTLS_X509_FMT_DER) >= 0) {
+						if (gnutls_x509_crt_import(cert, &peers[0], GNUTLS_X509_FMT_DER) == 0) {
 							size = sizeof(buf);
 							gnutls_x509_crt_get_dn(cert, buf, &size);
 							gg_debug_session(sess, GG_DEBUG_MISC, "//   cert subject: %s\n", buf);
@@ -826,6 +826,8 @@ gnutls_handshake_repeat:
 							gg_debug_session(sess, GG_DEBUG_MISC, "//   cert issuer: %s\n", buf);
 						}
 					}
+
+					gnutls_x509_crt_deinit(cert);
 				}
 			}
 
diff -up libgadu-1.11.0/src/libgadu.c.r1144 libgadu-1.11.0/src/libgadu.c
--- libgadu-1.11.0/src/libgadu.c.r1144	2011-05-29 13:41:30.000000000 +0200
+++ libgadu-1.11.0/src/libgadu.c	2011-07-12 21:49:57.000000000 +0200
@@ -881,8 +881,7 @@ struct gg_session *gg_login(const struct
 		gnutls_global_init();
 		gnutls_certificate_allocate_credentials(&tmp->xcred);
 		gnutls_init(&tmp->session, GNUTLS_CLIENT);
-		gnutls_priority_set_direct(tmp->session, "NORMAL:-VERS-TLS", NULL);
-//		gnutls_priority_set_direct(tmp->session, "NONE:+VERS-SSL3.0:+AES-128-CBC:+RSA:+SHA1:+COMP-NULL", NULL);
+		gnutls_set_default_priority(tmp->session);
 		gnutls_credentials_set(tmp->session, GNUTLS_CRD_CERTIFICATE, tmp->xcred);
 #elif defined(GG_CONFIG_HAVE_OPENSSL)
 		char buf[1024];
@@ -1116,18 +1115,6 @@ void gg_logoff(struct gg_session *sess)
 		sess->fd = -1;
 	}
 
-#ifdef GG_CONFIG_HAVE_GNUTLS
-	if (sess->ssl != NULL) {
-		gg_session_gnutls_t *tmp;
-
-		tmp = (gg_session_gnutls_t*) sess->ssl;
-		gnutls_deinit(tmp->session);
-		gnutls_certificate_free_credentials(tmp->xcred);
-		gnutls_global_deinit();
-		free(sess->ssl);
-	}
-#endif
-
 	if (sess->send_buf) {
 		free(sess->send_buf);
 		sess->send_buf = NULL;
@@ -1159,6 +1146,18 @@ void gg_free_session(struct gg_session *
 	free(sess->recv_buf);
 	free(sess->header_buf);
 
+#ifdef GG_CONFIG_HAVE_GNUTLS
+	if (sess->ssl != NULL) {
+		gg_session_gnutls_t *tmp;
+
+		tmp = (gg_session_gnutls_t*) sess->ssl;
+		gnutls_deinit(tmp->session);
+		gnutls_certificate_free_credentials(tmp->xcred);
+		gnutls_global_deinit();
+		free(sess->ssl);
+	}
+#endif
+
 #ifdef GG_CONFIG_HAVE_OPENSSL
 	if (sess->ssl)
 		SSL_free(sess->ssl);