From 60d8ca72c7b5370ac01dfd87480d3d661fae0ca2 Mon Sep 17 00:00:00 2001 From: Graeme Gregory Date: Fri, 28 Apr 2006 20:06:59 +0000 Subject: sylpheed_2.2.4.bb : Really fix compiling with GnuTLS this time. I had some openssl shrapnel in staging that gave me false positives. As a bonus I also had to forward port patches in gnutls. gnutls_1.3.5.bb : forward ported the openssl patches to this version of gnutls. This was an outstounding action from bug #725. --- packages/gnutls/gnutls-1.3.5/.mtn2git_empty | 0 packages/gnutls/gnutls-1.3.5/gnutls-openssl.patch | 120 +++++++++++++++++++++ packages/gnutls/gnutls_1.3.5.bb | 5 +- .../sylpheed/files/sylpheed-gnutls_2.2.4.patch | 47 ++++++++ packages/sylpheed/sylpheed_2.2.4.bb | 2 +- 5 files changed, 171 insertions(+), 3 deletions(-) create mode 100644 packages/gnutls/gnutls-1.3.5/.mtn2git_empty create mode 100644 packages/gnutls/gnutls-1.3.5/gnutls-openssl.patch diff --git a/packages/gnutls/gnutls-1.3.5/.mtn2git_empty b/packages/gnutls/gnutls-1.3.5/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/gnutls/gnutls-1.3.5/gnutls-openssl.patch b/packages/gnutls/gnutls-1.3.5/gnutls-openssl.patch new file mode 100644 index 0000000000..6eca97efd7 --- /dev/null +++ b/packages/gnutls/gnutls-1.3.5/gnutls-openssl.patch @@ -0,0 +1,120 @@ +--- gnutls-1.3.5/libextra/gnutls_openssl.c.orig 2006-04-28 20:01:40.000000000 +0100 ++++ gnutls-1.3.5/libextra/gnutls_openssl.c 2006-04-28 20:10:33.000000000 +0100 +@@ -252,12 +252,17 @@ + ssl->rfd = (gnutls_transport_ptr_t) - 1; + ssl->wfd = (gnutls_transport_ptr_t) - 1; + ++ ssl->ssl_peek_buffer = NULL; ++ ssl->ssl_peek_buffer_size = ssl->ssl_peek_avail = 0; ++ + return ssl; + } + + void + SSL_free (SSL * ssl) + { ++ if (ssl->ssl_peek_buffer) ++ free(ssl->ssl_peek_buffer); + gnutls_certificate_free_credentials (ssl->gnutls_cred); + gnutls_deinit (ssl->gnutls_state); + free (ssl); +@@ -281,6 +286,7 @@ + SSL_set_fd (SSL * ssl, int fd) + { + gnutls_transport_set_ptr (ssl->gnutls_state, (gnutls_transport_ptr_t) fd); ++ ssl->rfd = ssl->wfd = fd; + return 1; + } + +@@ -306,6 +312,17 @@ + return 1; + } + ++int SSL_get_rfd(SSL *ssl) ++{ ++ return ssl->rfd; ++} ++ ++int SSL_get_wfd(SSL *ssl) ++{ ++ return ssl->wfd; ++} ++ ++ + void + SSL_set_bio (SSL * ssl, BIO * rbio, BIO * wbio) + { +@@ -321,6 +338,8 @@ + int + SSL_pending (SSL * ssl) + { ++ if (ssl->ssl_peek_avail) ++ return ssl->ssl_peek_avail; + return gnutls_record_check_pending (ssl->gnutls_state); + } + +@@ -476,11 +495,50 @@ + return 1; + } + ++int SSL_peek(SSL *ssl, void *buf, int len) ++{ ++ if (len > ssl->ssl_peek_buffer_size) { ++ ssl->ssl_peek_buffer = realloc (ssl->ssl_peek_buffer, len); ++ ssl->ssl_peek_buffer_size = len; ++ } ++ ++ if (ssl->ssl_peek_avail == 0) { ++ ++ int ret; ++ ++ ret = gnutls_record_recv(ssl->gnutls_state, ssl->ssl_peek_buffer, len); ++ ssl->last_error = ret; ++ ++ if (ret > 0) ++ ssl->ssl_peek_avail += ret; ++ } ++ ++ if (len > ssl->ssl_peek_avail) ++ len = ssl->ssl_peek_avail; ++ ++ memcpy (buf, ssl->ssl_peek_buffer, len); ++ ++ return len; ++} ++ + int + SSL_read (SSL * ssl, void *buf, int len) + { + int ret; + ++ if (ssl->ssl_peek_avail) { ++ int n = (ssl->ssl_peek_avail > len) ? len : ssl->ssl_peek_avail; ++ ++ memcpy (buf, ssl->ssl_peek_buffer, n); ++ ++ if (ssl->ssl_peek_avail > n) ++ memmove (ssl->ssl_peek_buffer, ssl->ssl_peek_buffer + n, ssl->ssl_peek_avail - n); ++ ++ ssl->ssl_peek_avail -= n; ++ ++ return n; ++ } ++ + ret = gnutls_record_recv (ssl->gnutls_state, buf, len); + ssl->last_error = ret; + +--- gnutls-1.3.5/includes/gnutls/openssl.h.orig 2006-04-28 20:10:55.000000000 +0100 ++++ gnutls-1.3.5/includes/gnutls/openssl.h 2006-04-28 20:11:52.000000000 +0100 +@@ -164,6 +164,11 @@ + + gnutls_transport_ptr_t rfd; + gnutls_transport_ptr_t wfd; ++ ++ char *ssl_peek_buffer; ++ size_t ssl_peek_buffer_size; ++ size_t ssl_peek_avail; ++ + }; + + #define rbio gnutls_state diff --git a/packages/gnutls/gnutls_1.3.5.bb b/packages/gnutls/gnutls_1.3.5.bb index 7a45953998..90475b4162 100644 --- a/packages/gnutls/gnutls_1.3.5.bb +++ b/packages/gnutls/gnutls_1.3.5.bb @@ -3,9 +3,10 @@ DEPENDS = "zlib libgcrypt lzo" MAINTAINER = "Eric Shattow " LICENSE = "LGPL" -PR = "r1" +PR = "r2" -SRC_URI = "ftp://ftp.gnutls.org/pub/gnutls/devel/gnutls-${PV}.tar.bz2" +SRC_URI = "ftp://ftp.gnutls.org/pub/gnutls/devel/gnutls-${PV}.tar.bz2 \ + file://gnutls-openssl.patch;patch=1" inherit autotools inherit binconfig diff --git a/packages/sylpheed/files/sylpheed-gnutls_2.2.4.patch b/packages/sylpheed/files/sylpheed-gnutls_2.2.4.patch index 05fbbb63c1..2bc27a484f 100644 --- a/packages/sylpheed/files/sylpheed-gnutls_2.2.4.patch +++ b/packages/sylpheed/files/sylpheed-gnutls_2.2.4.patch @@ -91,3 +91,50 @@ #include "socket.h" +--- sylpheed-2.2.4/libsylph/ssl.c.orig 2006-04-28 20:38:46.000000000 +0100 ++++ sylpheed-2.2.4/libsylph/ssl.c 2006-04-28 20:40:22.000000000 +0100 +@@ -54,9 +54,11 @@ + debug_print(_("SSLv23 not available\n")); + } else { + debug_print(_("SSLv23 available\n")); ++#if USE_OPENSSL + if (certs_dir && + !SSL_CTX_load_verify_locations(ssl_ctx_SSLv23, NULL, + certs_dir)) ++#endif + g_warning("SSLv23 SSL_CTX_load_verify_locations failed.\n"); + } + +@@ -65,9 +67,11 @@ + debug_print(_("TLSv1 not available\n")); + } else { + debug_print(_("TLSv1 available\n")); ++#if USE_OPENSSL + if (certs_dir && + !SSL_CTX_load_verify_locations(ssl_ctx_TLSv1, NULL, + certs_dir)) ++#endif + g_warning("TLSv1 SSL_CTX_load_verify_locations failed.\n"); + } + +@@ -151,14 +155,19 @@ + g_free(str); + } + ++#if USE_OPENSSL + verify_result = SSL_get_verify_result(sockinfo->ssl); + if (verify_result == X509_V_OK) + debug_print("SSL verify OK\n"); + else ++#endif + g_warning("%s: SSL certificate verify failed (%ld: %s)\n", + sockinfo->hostname, verify_result, ++#if USE_OPENSSL + X509_verify_cert_error_string(verify_result)); +- ++#else ++ "Unsupport GnuTLS features"); ++#endif + X509_free(server_cert); + } + diff --git a/packages/sylpheed/sylpheed_2.2.4.bb b/packages/sylpheed/sylpheed_2.2.4.bb index 80ad0b6fe1..315f46ea86 100644 --- a/packages/sylpheed/sylpheed_2.2.4.bb +++ b/packages/sylpheed/sylpheed_2.2.4.bb @@ -3,7 +3,7 @@ DESCRIPTION = "Mail user agent" DEPENDS = "gtk+ gpgme gnutls" MAINTAINER = "Graeme Gregory " LICENSE = "GPL" -PR = "r4" +PR = "r5" SRC_URI = "http://sylpheed.good-day.net/sylpheed/v2.2/sylpheed-${PV}.tar.bz2 \ file://sylpheed-2.2.2-libsylph-Makefile-am.patch;patch=1 \ -- cgit v1.2.3