> Package: gatling
> Version: 0.12cvs20120114-3
> Severity: important
> 
> Hi Roland,
> gatling fails to build from source in stable:

[..]

> This is very likely related to the polarssl update in DSA-2782. Can you fix
> the FTBFS in a Wheezy point update?

Patch for stable attached.

Cheers,
Moritz
-- 
Moritz Mühlenhoff
Open Source Software Engineer

Univention GmbH
be open.
Mary-Somerville-Str.1
28359 Bremen
Tel. : +49 421 22232-0 [.....]
Fax : +49 421 22232-99

muehlenh...@univention.de
http://www.univention.de

Geschäftsführer: Peter H. Ganten
HRB 20755 Amtsgericht Bremen
Steuer-Nr.: 71-597-02876 
diff -Naur gatling-0.12cvs20120114.orig/debian/patches/fix-compat-with-polarssl12.patch gatling-0.12cvs20120114/debian/patches/fix-compat-with-polarssl12.patch
--- gatling-0.12cvs20120114.orig/debian/patches/fix-compat-with-polarssl12.patch	1970-01-01 01:00:00.000000000 +0100
+++ gatling-0.12cvs20120114/debian/patches/fix-compat-with-polarssl12.patch	2014-01-27 11:37:49.662659965 +0100
@@ -0,0 +1,133 @@
+Description: Fix compatibility with polarssl 1.2.x
+ PolarSSL was updated to 1.2.9 in DSA 2782 (due to security fixes which were
+ not backportable to the older releases). Version 1.2.0 introduces several
+ non-backwards-compatible API changes (fully mentioned here:
+ https://polarssl.org/tech-updates/releases/polarssl-1.2.0-released
+ * Rename cipher suites names
+ * Remove call to removed ssl_set_scb() function, TLS session cache is handled
+   internally. Also remove the functions my_get_session() and my_set_session()
+   used for that and adapt the ssl_set_session() call.
+Author: Moritz Mühlenhoff <muehlenh...@univention.de>
+Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=736318
+
+--- gatling-0.12cvs20120114.orig/pssl.c
++++ gatling-0.12cvs20120114/pssl.c
+@@ -28,95 +28,21 @@ havege_state hs;
+ 
+ int my_ciphersuites[] =
+ {
+-    SSL_EDH_RSA_AES_256_SHA,
+-    SSL_EDH_RSA_CAMELLIA_256_SHA,
+-    SSL_EDH_RSA_AES_128_SHA,
+-    SSL_EDH_RSA_CAMELLIA_128_SHA,
+-    SSL_EDH_RSA_DES_168_SHA,
+-    SSL_RSA_AES_256_SHA,
+-    SSL_RSA_CAMELLIA_256_SHA,
+-    SSL_RSA_AES_128_SHA,
+-    SSL_RSA_CAMELLIA_128_SHA,
+-    SSL_RSA_DES_168_SHA,
+-    SSL_RSA_RC4_128_SHA,
+-    SSL_RSA_RC4_128_MD5,
++    TLS_DHE_RSA_WITH_AES_256_CBC_SHA,
++    TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA,
++    TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
++    TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA,
++    TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA,
++    TLS_RSA_WITH_AES_256_CBC_SHA,
++    TLS_RSA_WITH_CAMELLIA_256_CBC_SHA,
++    TLS_RSA_WITH_AES_128_CBC_SHA,
++    TLS_RSA_WITH_CAMELLIA_128_CBC_SHA,
++    TLS_RSA_WITH_3DES_EDE_CBC_SHA,
++    TLS_RSA_WITH_RC4_128_SHA,
++    TLS_RSA_WITH_RC4_128_MD5,
+     0
+ };
+ 
+-/*
+- * These session callbacks use a simple chained list
+- * to store and retrieve the session information.
+- */
+-ssl_session *s_list_1st = NULL;
+-ssl_session *cur, *prv;
+-
+-static int my_get_session( ssl_context *ssl )
+-{
+-    time_t t = time( NULL );
+-
+-    if( ssl->resume == 0 )
+-        return( 1 );
+-
+-    cur = s_list_1st;
+-    prv = NULL;
+-
+-    while( cur != NULL )
+-    {
+-        prv = cur;
+-        cur = cur->next;
+-
+-        if( ssl->timeout != 0 && t - prv->start > ssl->timeout )
+-            continue;
+-
+-        if( ssl->session->ciphersuite != prv->ciphersuite ||
+-            ssl->session->length != prv->length )
+-            continue;
+-
+-        if( memcmp( ssl->session->id, prv->id, prv->length ) != 0 )
+-            continue;
+-
+-        memcpy( ssl->session->master, prv->master, 48 );
+-        return( 0 );
+-    }
+-
+-    return( 1 );
+-}
+-
+-static int my_set_session( ssl_context *ssl )
+-{
+-    time_t t = time( NULL );
+-
+-    cur = s_list_1st;
+-    prv = NULL;
+-
+-    while( cur != NULL )
+-    {
+-        if( ssl->timeout != 0 && t - cur->start > ssl->timeout )
+-            break; /* expired, reuse this slot */
+-
+-        if( memcmp( ssl->session->id, cur->id, cur->length ) == 0 )
+-            break; /* client reconnected */
+-
+-        prv = cur;
+-        cur = cur->next;
+-    }
+-
+-    if( cur == NULL )
+-    {
+-        cur = (ssl_session *) malloc( sizeof( ssl_session ) );
+-        if( cur == NULL )
+-            return( 1 );
+-
+-        if( prv == NULL )
+-              s_list_1st = cur;
+-        else  prv->next  = cur;
+-    }
+-
+-    memcpy( cur, ssl->session, sizeof( ssl_session ) );
+-
+-    return( 0 );
+-}
+-
+ static int my_net_recv( void *ctx, unsigned char *buf, size_t len ) {
+   int sock=(int)(uintptr_t)ctx;
+   return net_recv(&sock,buf,len);
+@@ -178,9 +104,8 @@ fail:
+   ssl_set_authmode( ssl, SSL_VERIFY_NONE );
+   ssl_set_rng( ssl, havege_random, &hs );
+   ssl_set_bio( ssl, my_net_recv, (void*)(uintptr_t)sock, my_net_send, (void*)(uintptr_t)sock );
+-  ssl_set_scb( ssl, my_get_session, my_set_session );
+   ssl_set_ciphersuites( ssl, my_ciphersuites );
+-  ssl_set_session( ssl, 1, 0, ssn );
++  ssl_set_session( ssl, ssn );
+ 
+   ssl_set_ca_chain( ssl, srvcert.next, NULL, NULL );
+   ssl_set_own_cert( ssl, &srvcert, &rsa );
diff -Naur gatling-0.12cvs20120114.orig/debian/patches/series gatling-0.12cvs20120114/debian/patches/series
--- gatling-0.12cvs20120114.orig/debian/patches/series	2012-11-12 22:05:52.000000000 +0100
+++ gatling-0.12cvs20120114/debian/patches/series	2014-01-27 11:35:08.232909740 +0100
@@ -8,3 +8,4 @@
 08-cgi-post-fix.patch
 09-gatling-ftp-fix-traversal.patch
 10-gatling-http-fix-traversal.patch
+fix-compat-with-polarssl12.patch

Reply via email to