| # commit 28962c9 |
| # BUG/MAJOR: ssl: OpenSSL context is stored in non-reserved memory slot |
| # |
| # We never saw unexplicated crash with SSL, so I suppose that we are |
| # luck, or the slot 0 is always reserved. Anyway the usage of the macro |
| # SSL_get_app_data() and SSL_set_app_data() seem wrong. This patch change |
| # the deprecated functions SSL_get_app_data() and SSL_set_app_data() |
| # by the new functions SSL_get_ex_data() and SSL_set_ex_data(), and |
| # it reserves the slot in the SSL memory space. |
| # |
| # For information, this is the two declaration which seems wrong or |
| # incomplete in the OpenSSL ssl.h file. We can see the usage of the |
| # slot 0 whoch is hardcoded, but never reserved. |
| # |
| # #define SSL_set_app_data(s,arg) (SSL_set_ex_data(s,0,(char *)arg)) |
| # #define SSL_get_app_data(s) (SSL_get_ex_data(s,0)) |
| |
| |
| varnishtest "OpenSSL bug: Random crashes" |
| feature ignore_unknown_macro |
| |
| |
| haproxy h1 -conf { |
| global |
| tune.ssl.default-dh-param 2048 |
| tune.ssl.capture-cipherlist-size 1 |
| |
| listen frt |
| mode http |
| bind "fd@${frt}" ssl crt ${testdir}/common.pem |
| http-request redirect location / |
| } -start |
| |
| process p1 "curl -i -k https://${h1_frt_addr}:${h1_frt_port}" -start |
| process p2 "curl -i -k https://${h1_frt_addr}:${h1_frt_port}" -start |
| process p3 "curl -i -k https://${h1_frt_addr}:${h1_frt_port}" -start |
| process p4 "curl -i -k https://${h1_frt_addr}:${h1_frt_port}" -start |
| process p5 "curl -i -k https://${h1_frt_addr}:${h1_frt_port}" -start |
| |
| process p1 -wait |
| process p2 -wait |
| process p3 -wait |
| process p4 -wait |
| process p5 -wait |