Convert existing usage of assert() to ossl_assert() in libssl

Provides consistent output and approach.

Reviewed-by: Tim Hudson <tjh@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/3496)
This commit is contained in:
Matt Caswell 2017-05-22 12:33:42 +01:00
parent a89325e41f
commit b77f3ed171
15 changed files with 81 additions and 72 deletions

View file

@ -104,7 +104,10 @@ int dtls1_new(SSL *s)
} }
s->d1 = d1; s->d1 = d1;
s->method->ssl_clear(s);
if (!s->method->ssl_clear(s))
return 0;
return 1; return 1;
} }
@ -154,7 +157,7 @@ void dtls1_free(SSL *s)
s->d1 = NULL; s->d1 = NULL;
} }
void dtls1_clear(SSL *s) int dtls1_clear(SSL *s)
{ {
pqueue *buffered_messages; pqueue *buffered_messages;
pqueue *sent_messages; pqueue *sent_messages;
@ -186,7 +189,8 @@ void dtls1_clear(SSL *s)
s->d1->sent_messages = sent_messages; s->d1->sent_messages = sent_messages;
} }
ssl3_clear(s); if (!ssl3_clear(s))
return 0;
if (s->method->version == DTLS_ANY_VERSION) if (s->method->version == DTLS_ANY_VERSION)
s->version = DTLS_MAX_VERSION; s->version = DTLS_MAX_VERSION;
@ -196,6 +200,8 @@ void dtls1_clear(SSL *s)
#endif #endif
else else
s->version = s->method->version; s->version = s->method->version;
return 1;
} }
long dtls1_ctrl(SSL *s, int cmd, long larg, void *parg) long dtls1_ctrl(SSL *s, int cmd, long larg, void *parg)

View file

@ -7,7 +7,7 @@
* https://www.openssl.org/source/license.html * https://www.openssl.org/source/license.html
*/ */
#include <assert.h> #include "e_os.h"
#include "packet_locl.h" #include "packet_locl.h"
#define DEFAULT_BUF_SIZE 256 #define DEFAULT_BUF_SIZE 256
@ -39,8 +39,7 @@ int WPACKET_sub_allocate_bytes__(WPACKET *pkt, size_t len,
int WPACKET_reserve_bytes(WPACKET *pkt, size_t len, unsigned char **allocbytes) int WPACKET_reserve_bytes(WPACKET *pkt, size_t len, unsigned char **allocbytes)
{ {
/* Internal API, so should not fail */ /* Internal API, so should not fail */
assert(pkt->subs != NULL && len != 0); if (!ossl_assert(pkt->subs != NULL && len != 0))
if (pkt->subs == NULL || len == 0)
return 0; return 0;
if (pkt->maxsize - pkt->written < len) if (pkt->maxsize - pkt->written < len)
@ -120,8 +119,7 @@ int WPACKET_init_static_len(WPACKET *pkt, unsigned char *buf, size_t len,
size_t max = maxmaxsize(lenbytes); size_t max = maxmaxsize(lenbytes);
/* Internal API, so should not fail */ /* Internal API, so should not fail */
assert(buf != NULL && len > 0); if (!ossl_assert(buf != NULL && len > 0))
if (buf == NULL || len == 0)
return 0; return 0;
pkt->staticbuf = buf; pkt->staticbuf = buf;
@ -134,8 +132,7 @@ int WPACKET_init_static_len(WPACKET *pkt, unsigned char *buf, size_t len,
int WPACKET_init_len(WPACKET *pkt, BUF_MEM *buf, size_t lenbytes) int WPACKET_init_len(WPACKET *pkt, BUF_MEM *buf, size_t lenbytes)
{ {
/* Internal API, so should not fail */ /* Internal API, so should not fail */
assert(buf != NULL); if (!ossl_assert(buf != NULL))
if (buf == NULL)
return 0; return 0;
pkt->staticbuf = NULL; pkt->staticbuf = NULL;
@ -153,8 +150,7 @@ int WPACKET_init(WPACKET *pkt, BUF_MEM *buf)
int WPACKET_set_flags(WPACKET *pkt, unsigned int flags) int WPACKET_set_flags(WPACKET *pkt, unsigned int flags)
{ {
/* Internal API, so should not fail */ /* Internal API, so should not fail */
assert(pkt->subs != NULL); if (!ossl_assert(pkt->subs != NULL))
if (pkt->subs == NULL)
return 0; return 0;
pkt->subs->flags = flags; pkt->subs->flags = flags;
@ -228,8 +224,7 @@ int WPACKET_fill_lengths(WPACKET *pkt)
{ {
WPACKET_SUB *sub; WPACKET_SUB *sub;
assert(pkt->subs != NULL); if (!ossl_assert(pkt->subs != NULL))
if (pkt->subs == NULL)
return 0; return 0;
for (sub = pkt->subs; sub != NULL; sub = sub->parent) { for (sub = pkt->subs; sub != NULL; sub = sub->parent) {
@ -278,8 +273,7 @@ int WPACKET_start_sub_packet_len__(WPACKET *pkt, size_t lenbytes)
unsigned char *lenchars; unsigned char *lenchars;
/* Internal API, so should not fail */ /* Internal API, so should not fail */
assert(pkt->subs != NULL); if (!ossl_assert(pkt->subs != NULL))
if (pkt->subs == NULL)
return 0; return 0;
sub = OPENSSL_zalloc(sizeof(*sub)); sub = OPENSSL_zalloc(sizeof(*sub));
@ -314,9 +308,7 @@ int WPACKET_put_bytes__(WPACKET *pkt, unsigned int val, size_t size)
unsigned char *data; unsigned char *data;
/* Internal API, so should not fail */ /* Internal API, so should not fail */
assert(size <= sizeof(unsigned int)); if (!ossl_assert(size <= sizeof(unsigned int))
if (size > sizeof(unsigned int)
|| !WPACKET_allocate_bytes(pkt, size, &data) || !WPACKET_allocate_bytes(pkt, size, &data)
|| !put_value(data, val, size)) || !put_value(data, val, size))
return 0; return 0;
@ -330,8 +322,7 @@ int WPACKET_set_max_size(WPACKET *pkt, size_t maxsize)
size_t lenbytes; size_t lenbytes;
/* Internal API, so should not fail */ /* Internal API, so should not fail */
assert(pkt->subs != NULL); if (!ossl_assert(pkt->subs != NULL))
if (pkt->subs == NULL)
return 0; return 0;
/* Find the WPACKET_SUB for the top level */ /* Find the WPACKET_SUB for the top level */
@ -394,8 +385,7 @@ int WPACKET_sub_memcpy__(WPACKET *pkt, const void *src, size_t len,
int WPACKET_get_total_written(WPACKET *pkt, size_t *written) int WPACKET_get_total_written(WPACKET *pkt, size_t *written)
{ {
/* Internal API, so should not fail */ /* Internal API, so should not fail */
assert(written != NULL); if (!ossl_assert(written != NULL))
if (written == NULL)
return 0; return 0;
*written = pkt->written; *written = pkt->written;
@ -406,8 +396,7 @@ int WPACKET_get_total_written(WPACKET *pkt, size_t *written)
int WPACKET_get_length(WPACKET *pkt, size_t *len) int WPACKET_get_length(WPACKET *pkt, size_t *len)
{ {
/* Internal API, so should not fail */ /* Internal API, so should not fail */
assert(pkt->subs != NULL && len != NULL); if (!ossl_assert(pkt->subs != NULL && len != NULL))
if (pkt->subs == NULL || len == NULL)
return 0; return 0;
*len = pkt->written - pkt->subs->pwritten; *len = pkt->written - pkt->subs->pwritten;

View file

@ -14,7 +14,6 @@
#include <openssl/evp.h> #include <openssl/evp.h>
#include <openssl/buffer.h> #include <openssl/buffer.h>
#include "record_locl.h" #include "record_locl.h"
#include <assert.h>
#include "../packet_locl.h" #include "../packet_locl.h"
int DTLS_RECORD_LAYER_new(RECORD_LAYER *rl) int DTLS_RECORD_LAYER_new(RECORD_LAYER *rl)
@ -645,8 +644,7 @@ int dtls1_read_bytes(SSL *s, int type, int *recvd_type, unsigned char *buf,
* (which is tested for at the top of this function) then init must be * (which is tested for at the top of this function) then init must be
* finished * finished
*/ */
assert(SSL_is_init_finished(s)); if (!ossl_assert(SSL_is_init_finished(s))) {
if (!SSL_is_init_finished(s)) {
al = SSL_AD_INTERNAL_ERROR; al = SSL_AD_INTERNAL_ERROR;
SSLerr(SSL_F_DTLS1_READ_BYTES, ERR_R_INTERNAL_ERROR); SSLerr(SSL_F_DTLS1_READ_BYTES, ERR_R_INTERNAL_ERROR);
goto f_err; goto f_err;

View file

@ -8,7 +8,6 @@
*/ */
#include <stdio.h> #include <stdio.h>
#include <assert.h>
#include <limits.h> #include <limits.h>
#include <errno.h> #include <errno.h>
#define USE_SOCKETS #define USE_SOCKETS

View file

@ -7,7 +7,6 @@
* https://www.openssl.org/source/license.html * https://www.openssl.org/source/license.html
*/ */
#include <assert.h>
#include "../ssl_locl.h" #include "../ssl_locl.h"
#include "internal/constant_time_locl.h" #include "internal/constant_time_locl.h"
#include <openssl/rand.h> #include <openssl/rand.h>
@ -436,8 +435,7 @@ int ssl3_get_record(SSL *s)
unsigned char *mac; unsigned char *mac;
/* TODO(size_t): convert this to do size_t properly */ /* TODO(size_t): convert this to do size_t properly */
imac_size = EVP_MD_CTX_size(s->read_hash); imac_size = EVP_MD_CTX_size(s->read_hash);
assert(imac_size >= 0 && imac_size <= EVP_MAX_MD_SIZE); if (!ossl_assert(imac_size >= 0 && imac_size <= EVP_MAX_MD_SIZE)) {
if (imac_size < 0 || imac_size > EVP_MAX_MD_SIZE) {
al = SSL_AD_INTERNAL_ERROR; al = SSL_AD_INTERNAL_ERROR;
SSLerr(SSL_F_SSL3_GET_RECORD, ERR_LIB_EVP); SSLerr(SSL_F_SSL3_GET_RECORD, ERR_LIB_EVP);
goto f_err; goto f_err;

View file

@ -7,7 +7,6 @@
* https://www.openssl.org/source/license.html * https://www.openssl.org/source/license.html
*/ */
#include <assert.h>
#include "../ssl_locl.h" #include "../ssl_locl.h"
#include "record_locl.h" #include "record_locl.h"
@ -64,8 +63,7 @@ int tls13_enc(SSL *s, SSL3_RECORD *recs, size_t n_recs, int sending)
* To get here we must have selected a ciphersuite - otherwise ctx would * To get here we must have selected a ciphersuite - otherwise ctx would
* be NULL * be NULL
*/ */
assert(s->s3->tmp.new_cipher != NULL); if (!ossl_assert(s->s3->tmp.new_cipher != NULL))
if (s->s3->tmp.new_cipher == NULL)
return -1; return -1;
alg_enc = s->s3->tmp.new_cipher->algorithm_enc; alg_enc = s->s3->tmp.new_cipher->algorithm_enc;
} }

View file

@ -7,7 +7,6 @@
* https://www.openssl.org/source/license.html * https://www.openssl.org/source/license.html
*/ */
#include <assert.h>
#include "internal/constant_time_locl.h" #include "internal/constant_time_locl.h"
#include "ssl_locl.h" #include "ssl_locl.h"
@ -229,15 +228,14 @@ int ssl3_cbc_digest_record(const EVP_MD_CTX *ctx,
* ssl3_cbc_record_digest_supported should have been called first to * ssl3_cbc_record_digest_supported should have been called first to
* check that the hash function is supported. * check that the hash function is supported.
*/ */
assert(0); if (md_out_size != NULL)
if (md_out_size)
*md_out_size = 0; *md_out_size = 0;
return 0; return ossl_assert(0);
} }
if (!ossl_assert(md_length_size <= MAX_HASH_BIT_COUNT_BYTES if (!ossl_assert(md_length_size <= MAX_HASH_BIT_COUNT_BYTES)
&& md_block_size <= MAX_HASH_BLOCK_SIZE || !ossl_assert(md_block_size <= MAX_HASH_BLOCK_SIZE)
&& md_size <= EVP_MAX_MD_SIZE)) || !ossl_assert(md_size <= EVP_MAX_MD_SIZE))
return 0; return 0;
header_length = 13; header_length = 13;

View file

@ -48,7 +48,6 @@
*/ */
#include <stdio.h> #include <stdio.h>
#include <assert.h>
#include <openssl/objects.h> #include <openssl/objects.h>
#include "ssl_locl.h" #include "ssl_locl.h"
#include <openssl/md5.h> #include <openssl/md5.h>
@ -2914,7 +2913,10 @@ int ssl3_new(SSL *s)
if (!SSL_SRP_CTX_init(s)) if (!SSL_SRP_CTX_init(s))
goto err; goto err;
#endif #endif
s->method->ssl_clear(s);
if (!s->method->ssl_clear(s))
return 0;
return 1; return 1;
err: err:
return 0; return 0;
@ -2950,7 +2952,7 @@ void ssl3_free(SSL *s)
s->s3 = NULL; s->s3 = NULL;
} }
void ssl3_clear(SSL *s) int ssl3_clear(SSL *s)
{ {
ssl3_cleanup_key_block(s); ssl3_cleanup_key_block(s);
OPENSSL_free(s->s3->tmp.ctype); OPENSSL_free(s->s3->tmp.ctype);
@ -2972,7 +2974,8 @@ void ssl3_clear(SSL *s)
/* NULL/zero-out everything in the s3 struct */ /* NULL/zero-out everything in the s3 struct */
memset(s->s3, 0, sizeof(*s->s3)); memset(s->s3, 0, sizeof(*s->s3));
ssl_free_wbio_buffer(s); if (!ssl_free_wbio_buffer(s))
return 0;
s->version = SSL3_VERSION; s->version = SSL3_VERSION;
@ -2981,6 +2984,8 @@ void ssl3_clear(SSL *s)
s->ext.npn = NULL; s->ext.npn = NULL;
s->ext.npn_len = 0; s->ext.npn_len = 0;
#endif #endif
return 1;
} }
#ifndef OPENSSL_NO_SRP #ifndef OPENSSL_NO_SRP
@ -4038,7 +4043,9 @@ int ssl_fill_hello_random(SSL *s, int server, unsigned char *result, size_t len,
} }
#ifndef OPENSSL_NO_TLS13DOWNGRADE #ifndef OPENSSL_NO_TLS13DOWNGRADE
if (ret) { if (ret) {
assert(sizeof(tls11downgrade) < len && sizeof(tls12downgrade) < len); if (!ossl_assert(sizeof(tls11downgrade) < len)
|| !ossl_assert(sizeof(tls12downgrade) < len))
return 0;
if (dgrd == DOWNGRADE_TO_1_2) if (dgrd == DOWNGRADE_TO_1_2)
memcpy(result + len - sizeof(tls12downgrade), tls12downgrade, memcpy(result + len - sizeof(tls12downgrade), tls12downgrade,
sizeof(tls12downgrade)); sizeof(tls12downgrade));

View file

@ -12,7 +12,6 @@
#include "internal/err.h" #include "internal/err.h"
#include <openssl/crypto.h> #include <openssl/crypto.h>
#include <openssl/evp.h> #include <openssl/evp.h>
#include <assert.h>
#include "ssl_locl.h" #include "ssl_locl.h"
#include "internal/thread_once.h" #include "internal/thread_once.h"

View file

@ -39,7 +39,6 @@
* OTHERWISE. * OTHERWISE.
*/ */
#include <assert.h>
#include <stdio.h> #include <stdio.h>
#include "ssl_locl.h" #include "ssl_locl.h"
#include <openssl/objects.h> #include <openssl/objects.h>
@ -493,8 +492,10 @@ int SSL_clear(SSL *s)
s->method = s->ctx->method; s->method = s->ctx->method;
if (!s->method->ssl_new(s)) if (!s->method->ssl_new(s))
return 0; return 0;
} else } else {
s->method->ssl_clear(s); if (!s->method->ssl_clear(s))
return 0;
}
RECORD_LAYER_clear(&s->rlayer); RECORD_LAYER_clear(&s->rlayer);
@ -981,6 +982,7 @@ void SSL_free(SSL *s)
dane_final(&s->dane); dane_final(&s->dane);
CRYPTO_free_ex_data(CRYPTO_EX_INDEX_SSL, s, &s->ex_data); CRYPTO_free_ex_data(CRYPTO_EX_INDEX_SSL, s, &s->ex_data);
/* Ignore return value */
ssl_free_wbio_buffer(s); ssl_free_wbio_buffer(s);
BIO_free_all(s->wbio); BIO_free_all(s->wbio);
@ -3529,16 +3531,19 @@ int ssl_init_wbio_buffer(SSL *s)
return 1; return 1;
} }
void ssl_free_wbio_buffer(SSL *s) int ssl_free_wbio_buffer(SSL *s)
{ {
/* callers ensure s is never null */ /* callers ensure s is never null */
if (s->bbio == NULL) if (s->bbio == NULL)
return; return 1;
s->wbio = BIO_pop(s->wbio); s->wbio = BIO_pop(s->wbio);
assert(s->wbio != NULL); if (!ossl_assert(s->wbio != NULL))
return 0;
BIO_free(s->bbio); BIO_free(s->bbio);
s->bbio = NULL; s->bbio = NULL;
return 1;
} }
void SSL_CTX_set_quiet_shutdown(SSL_CTX *ctx, int mode) void SSL_CTX_set_quiet_shutdown(SSL_CTX *ctx, int mode)

View file

@ -452,7 +452,7 @@ struct ssl_method_st {
unsigned flags; unsigned flags;
unsigned long mask; unsigned long mask;
int (*ssl_new) (SSL *s); int (*ssl_new) (SSL *s);
void (*ssl_clear) (SSL *s); int (*ssl_clear) (SSL *s);
void (*ssl_free) (SSL *s); void (*ssl_free) (SSL *s);
int (*ssl_accept) (SSL *s); int (*ssl_accept) (SSL *s);
int (*ssl_connect) (SSL *s); int (*ssl_connect) (SSL *s);
@ -2181,7 +2181,7 @@ __owur int ssl3_read(SSL *s, void *buf, size_t len, size_t *readbytes);
__owur int ssl3_peek(SSL *s, void *buf, size_t len, size_t *readbytes); __owur int ssl3_peek(SSL *s, void *buf, size_t len, size_t *readbytes);
__owur int ssl3_write(SSL *s, const void *buf, size_t len, size_t *written); __owur int ssl3_write(SSL *s, const void *buf, size_t len, size_t *written);
__owur int ssl3_shutdown(SSL *s); __owur int ssl3_shutdown(SSL *s);
void ssl3_clear(SSL *s); int ssl3_clear(SSL *s);
__owur long ssl3_ctrl(SSL *s, int cmd, long larg, void *parg); __owur long ssl3_ctrl(SSL *s, int cmd, long larg, void *parg);
__owur long ssl3_ctx_ctrl(SSL_CTX *s, int cmd, long larg, void *parg); __owur long ssl3_ctx_ctrl(SSL_CTX *s, int cmd, long larg, void *parg);
__owur long ssl3_callback_ctrl(SSL *s, int cmd, void (*fp) (void)); __owur long ssl3_callback_ctrl(SSL *s, int cmd, void (*fp) (void));
@ -2246,20 +2246,20 @@ __owur int dtls1_query_mtu(SSL *s);
__owur int tls1_new(SSL *s); __owur int tls1_new(SSL *s);
void tls1_free(SSL *s); void tls1_free(SSL *s);
void tls1_clear(SSL *s); int tls1_clear(SSL *s);
long tls1_ctrl(SSL *s, int cmd, long larg, void *parg); long tls1_ctrl(SSL *s, int cmd, long larg, void *parg);
long tls1_callback_ctrl(SSL *s, int cmd, void (*fp) (void)); long tls1_callback_ctrl(SSL *s, int cmd, void (*fp) (void));
__owur int dtls1_new(SSL *s); __owur int dtls1_new(SSL *s);
void dtls1_free(SSL *s); void dtls1_free(SSL *s);
void dtls1_clear(SSL *s); int dtls1_clear(SSL *s);
long dtls1_ctrl(SSL *s, int cmd, long larg, void *parg); long dtls1_ctrl(SSL *s, int cmd, long larg, void *parg);
__owur int dtls1_shutdown(SSL *s); __owur int dtls1_shutdown(SSL *s);
__owur int dtls1_dispatch_alert(SSL *s); __owur int dtls1_dispatch_alert(SSL *s);
__owur int ssl_init_wbio_buffer(SSL *s); __owur int ssl_init_wbio_buffer(SSL *s);
void ssl_free_wbio_buffer(SSL *s); int ssl_free_wbio_buffer(SSL *s);
__owur int tls1_change_cipher_state(SSL *s, int which); __owur int tls1_change_cipher_state(SSL *s, int which);
__owur int tls1_setup_key_block(SSL *s); __owur int tls1_setup_key_block(SSL *s);

View file

@ -7,7 +7,6 @@
* https://www.openssl.org/source/license.html * https://www.openssl.org/source/license.html
*/ */
#include <assert.h>
#include <openssl/ocsp.h> #include <openssl/ocsp.h>
#include "../ssl_locl.h" #include "../ssl_locl.h"
#include "statem_locl.h" #include "statem_locl.h"
@ -541,8 +540,7 @@ static int add_key_share(SSL *s, WPACKET *pkt, unsigned int curve_id)
size_t encodedlen; size_t encodedlen;
if (s->s3->tmp.pkey != NULL) { if (s->s3->tmp.pkey != NULL) {
assert(s->hello_retry_request); if (!ossl_assert(s->hello_retry_request)) {
if (!s->hello_retry_request) {
SSLerr(SSL_F_ADD_KEY_SHARE, ERR_R_INTERNAL_ERROR); SSLerr(SSL_F_ADD_KEY_SHARE, ERR_R_INTERNAL_ERROR);
return 0; return 0;
} }
@ -923,8 +921,13 @@ int tls_parse_stoc_renegotiate(SSL *s, PACKET *pkt, unsigned int context,
const unsigned char *data; const unsigned char *data;
/* Check for logic errors */ /* Check for logic errors */
assert(expected_len == 0 || s->s3->previous_client_finished_len != 0); if (!ossl_assert(expected_len == 0
assert(expected_len == 0 || s->s3->previous_server_finished_len != 0); || s->s3->previous_client_finished_len != 0)
|| !ossl_assert(expected_len == 0
|| s->s3->previous_server_finished_len != 0)) {
*al = SSL_AD_INTERNAL_ERROR;
return 0;
}
/* Parse the length byte */ /* Parse the length byte */
if (!PACKET_get_1_len(pkt, &ilen)) { if (!PACKET_get_1_len(pkt, &ilen)) {

View file

@ -9,7 +9,6 @@
/* Custom extension utility functions */ /* Custom extension utility functions */
#include <assert.h>
#include <openssl/ct.h> #include <openssl/ct.h>
#include "../ssl_locl.h" #include "../ssl_locl.h"
#include "statem_locl.h" #include "statem_locl.h"
@ -217,7 +216,10 @@ int custom_ext_add(SSL *s, int context, WPACKET *pkt, X509 *x, size_t chainidx,
/* /*
* We can't send duplicates: code logic should prevent this. * We can't send duplicates: code logic should prevent this.
*/ */
assert((meth->ext_flags & SSL_EXT_FLAG_SENT) == 0); if (!ossl_assert((meth->ext_flags & SSL_EXT_FLAG_SENT) == 0)) {
*al = SSL_AD_INTERNAL_ERROR;
return 0;
}
/* /*
* Indicate extension has been sent: this is both a sanity check to * Indicate extension has been sent: this is both a sanity check to
* ensure we don't send duplicate extensions and indicates that it * ensure we don't send duplicate extensions and indicates that it

View file

@ -995,7 +995,8 @@ WORK_STATE tls_finish_handshake(SSL *s, WORK_STATE wst, int clearbufs)
BUF_MEM_free(s->init_buf); BUF_MEM_free(s->init_buf);
s->init_buf = NULL; s->init_buf = NULL;
} }
ssl_free_wbio_buffer(s); if (!ssl_free_wbio_buffer(s))
return WORK_ERROR;
s->init_num = 0; s->init_num = 0;
} }

View file

@ -101,9 +101,11 @@ long tls1_default_timeout(void)
int tls1_new(SSL *s) int tls1_new(SSL *s)
{ {
if (!ssl3_new(s)) if (!ssl3_new(s))
return (0); return 0;
s->method->ssl_clear(s); if (!s->method->ssl_clear(s))
return (1); return 0;
return 1;
} }
void tls1_free(SSL *s) void tls1_free(SSL *s)
@ -112,13 +114,17 @@ void tls1_free(SSL *s)
ssl3_free(s); ssl3_free(s);
} }
void tls1_clear(SSL *s) int tls1_clear(SSL *s)
{ {
ssl3_clear(s); if (!ssl3_clear(s))
return 0;
if (s->method->version == TLS_ANY_VERSION) if (s->method->version == TLS_ANY_VERSION)
s->version = TLS_MAX_VERSION; s->version = TLS_MAX_VERSION;
else else
s->version = s->method->version; s->version = s->method->version;
return 1;
} }
#ifndef OPENSSL_NO_EC #ifndef OPENSSL_NO_EC