|
@@ -92,8 +92,6 @@
|
|
|
# include <openssl/ct.h>
|
|
|
#endif
|
|
|
|
|
|
-#include "../ssl/ssl_locl.h"
|
|
|
-
|
|
|
/*
|
|
|
* Or gethostname won't be declared properly
|
|
|
* on Compaq platforms (at least with DEC C).
|
|
@@ -1430,7 +1428,7 @@ int main(int argc, char *argv[])
|
|
|
printf("Available compression methods:");
|
|
|
for (j = 0; j < n; j++) {
|
|
|
SSL_COMP *c = sk_SSL_COMP_value(ssl_comp_methods, j);
|
|
|
- printf(" %s:%d", c->name, c->id);
|
|
|
+ printf(" %s:%d", SSL_COMP_get0_name(c), SSL_COMP_get_id(c));
|
|
|
}
|
|
|
printf("\n");
|
|
|
}
|
|
@@ -2676,8 +2674,29 @@ int doit(SSL *s_ssl, SSL *c_ssl, long count)
|
|
|
SSL_set_max_send_fragment(c_ssl, max_frag);
|
|
|
BIO_set_ssl(c_bio, c_ssl, BIO_NOCLOSE);
|
|
|
|
|
|
+ /*
|
|
|
+ * We've just given our ref to these BIOs to c_ssl. We need another one to
|
|
|
+ * give to s_ssl
|
|
|
+ */
|
|
|
+ if (!BIO_up_ref(c_to_s)) {
|
|
|
+ /* c_to_s and s_to_c will get freed when we free c_ssl */
|
|
|
+ c_to_s = NULL;
|
|
|
+ s_to_c = NULL;
|
|
|
+ goto err;
|
|
|
+ }
|
|
|
+ if (!BIO_up_ref(s_to_c)) {
|
|
|
+ /* s_to_c will get freed when we free c_ssl */
|
|
|
+ s_to_c = NULL;
|
|
|
+ goto err;
|
|
|
+ }
|
|
|
+
|
|
|
SSL_set_accept_state(s_ssl);
|
|
|
SSL_set_bio(s_ssl, c_to_s, s_to_c);
|
|
|
+
|
|
|
+ /* We've used up all our refs to these now */
|
|
|
+ c_to_s = NULL;
|
|
|
+ s_to_c = NULL;
|
|
|
+
|
|
|
SSL_set_max_send_fragment(s_ssl, max_frag);
|
|
|
BIO_set_ssl(s_bio, s_ssl, BIO_NOCLOSE);
|
|
|
|
|
@@ -2890,23 +2909,6 @@ int doit(SSL *s_ssl, SSL *c_ssl, long count)
|
|
|
}
|
|
|
ret = 0;
|
|
|
err:
|
|
|
- /*
|
|
|
- * We have to set the BIO's to NULL otherwise they will be
|
|
|
- * OPENSSL_free()ed twice. Once when th s_ssl is SSL_free()ed and again
|
|
|
- * when c_ssl is SSL_free()ed. This is a hack required because s_ssl and
|
|
|
- * c_ssl are sharing the same BIO structure and SSL_set_bio() and
|
|
|
- * SSL_free() automatically BIO_free non NULL entries. You should not
|
|
|
- * normally do this or be required to do this
|
|
|
- */
|
|
|
- if (s_ssl != NULL) {
|
|
|
- s_ssl->rbio = NULL;
|
|
|
- s_ssl->wbio = NULL;
|
|
|
- }
|
|
|
- if (c_ssl != NULL) {
|
|
|
- c_ssl->rbio = NULL;
|
|
|
- c_ssl->wbio = NULL;
|
|
|
- }
|
|
|
-
|
|
|
BIO_free(c_to_s);
|
|
|
BIO_free(s_to_c);
|
|
|
BIO_free_all(c_bio);
|