From e1b84c43076222a250e436e71045972c584515ce Mon Sep 17 00:00:00 2001 From: doug <> Date: Sun, 19 Jul 2015 20:32:18 +0000 Subject: Allow *_free() functions in libssl to handle NULL input. This mimics free()'s behavior which makes error handling simpler. ok bcook@ miod@ --- src/lib/libssl/d1_both.c | 4 +++- src/lib/libssl/d1_lib.c | 5 ++++- src/lib/libssl/src/ssl/d1_both.c | 4 +++- src/lib/libssl/src/ssl/d1_lib.c | 5 ++++- src/lib/libssl/src/ssl/s3_enc.c | 5 ++++- src/lib/libssl/src/ssl/ssl_lib.c | 5 ++++- src/lib/libssl/src/ssl/t1_lib.c | 5 ++++- src/lib/libssl/ssl_lib.c | 5 ++++- src/lib/libssl/t1_lib.c | 5 ++++- 9 files changed, 34 insertions(+), 9 deletions(-) diff --git a/src/lib/libssl/d1_both.c b/src/lib/libssl/d1_both.c index 5c93af8bd9..b479c61322 100644 --- a/src/lib/libssl/d1_both.c +++ b/src/lib/libssl/d1_both.c @@ -1,4 +1,4 @@ -/* $OpenBSD: d1_both.c,v 1.33 2015/07/18 23:00:23 doug Exp $ */ +/* $OpenBSD: d1_both.c,v 1.34 2015/07/19 20:32:18 doug Exp $ */ /* * DTLS implementation written by Nagendra Modadugu * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. @@ -209,6 +209,8 @@ dtls1_hm_fragment_new(unsigned long frag_len, int reassembly) static void dtls1_hm_fragment_free(hm_fragment *frag) { + if (frag == NULL) + return; if (frag->msg_header.is_ccs) { EVP_CIPHER_CTX_free( diff --git a/src/lib/libssl/d1_lib.c b/src/lib/libssl/d1_lib.c index dd789ccc70..b269efe469 100644 --- a/src/lib/libssl/d1_lib.c +++ b/src/lib/libssl/d1_lib.c @@ -1,4 +1,4 @@ -/* $OpenBSD: d1_lib.c,v 1.28 2015/03/19 14:00:22 tedu Exp $ */ +/* $OpenBSD: d1_lib.c,v 1.29 2015/07/19 20:32:18 doug Exp $ */ /* * DTLS implementation written by Nagendra Modadugu * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. @@ -190,6 +190,9 @@ dtls1_clear_queues(SSL *s) void dtls1_free(SSL *s) { + if (s == NULL) + return; + ssl3_free(s); dtls1_clear_queues(s); diff --git a/src/lib/libssl/src/ssl/d1_both.c b/src/lib/libssl/src/ssl/d1_both.c index 5c93af8bd9..b479c61322 100644 --- a/src/lib/libssl/src/ssl/d1_both.c +++ b/src/lib/libssl/src/ssl/d1_both.c @@ -1,4 +1,4 @@ -/* $OpenBSD: d1_both.c,v 1.33 2015/07/18 23:00:23 doug Exp $ */ +/* $OpenBSD: d1_both.c,v 1.34 2015/07/19 20:32:18 doug Exp $ */ /* * DTLS implementation written by Nagendra Modadugu * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. @@ -209,6 +209,8 @@ dtls1_hm_fragment_new(unsigned long frag_len, int reassembly) static void dtls1_hm_fragment_free(hm_fragment *frag) { + if (frag == NULL) + return; if (frag->msg_header.is_ccs) { EVP_CIPHER_CTX_free( diff --git a/src/lib/libssl/src/ssl/d1_lib.c b/src/lib/libssl/src/ssl/d1_lib.c index dd789ccc70..b269efe469 100644 --- a/src/lib/libssl/src/ssl/d1_lib.c +++ b/src/lib/libssl/src/ssl/d1_lib.c @@ -1,4 +1,4 @@ -/* $OpenBSD: d1_lib.c,v 1.28 2015/03/19 14:00:22 tedu Exp $ */ +/* $OpenBSD: d1_lib.c,v 1.29 2015/07/19 20:32:18 doug Exp $ */ /* * DTLS implementation written by Nagendra Modadugu * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. @@ -190,6 +190,9 @@ dtls1_clear_queues(SSL *s) void dtls1_free(SSL *s) { + if (s == NULL) + return; + ssl3_free(s); dtls1_clear_queues(s); diff --git a/src/lib/libssl/src/ssl/s3_enc.c b/src/lib/libssl/src/ssl/s3_enc.c index c30b7519fb..bfa719df5f 100644 --- a/src/lib/libssl/src/ssl/s3_enc.c +++ b/src/lib/libssl/src/ssl/s3_enc.c @@ -1,4 +1,4 @@ -/* $OpenBSD: s3_enc.c,v 1.60 2015/06/17 14:27:56 jsing Exp $ */ +/* $OpenBSD: s3_enc.c,v 1.61 2015/07/19 20:32:18 doug Exp $ */ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * @@ -491,6 +491,9 @@ ssl3_free_digest_list(SSL *s) { int i; + if (s == NULL) + return; + if (s->s3->handshake_dgst == NULL) return; for (i = 0; i < SSL_MAX_DIGEST; i++) { diff --git a/src/lib/libssl/src/ssl/ssl_lib.c b/src/lib/libssl/src/ssl/ssl_lib.c index 1dd518d0b8..629ad03554 100644 --- a/src/lib/libssl/src/ssl/ssl_lib.c +++ b/src/lib/libssl/src/ssl/ssl_lib.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ssl_lib.c,v 1.104 2015/06/28 00:08:27 doug Exp $ */ +/* $OpenBSD: ssl_lib.c,v 1.105 2015/07/19 20:32:18 doug Exp $ */ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * @@ -2825,6 +2825,9 @@ ssl_init_wbio_buffer(SSL *s, int push) void ssl_free_wbio_buffer(SSL *s) { + if (s == NULL) + return; + if (s->bbio == NULL) return; diff --git a/src/lib/libssl/src/ssl/t1_lib.c b/src/lib/libssl/src/ssl/t1_lib.c index b0f0de3bd8..70823bf8e7 100644 --- a/src/lib/libssl/src/ssl/t1_lib.c +++ b/src/lib/libssl/src/ssl/t1_lib.c @@ -1,4 +1,4 @@ -/* $OpenBSD: t1_lib.c,v 1.79 2015/07/17 15:50:37 doug Exp $ */ +/* $OpenBSD: t1_lib.c,v 1.80 2015/07/19 20:32:18 doug Exp $ */ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * @@ -198,6 +198,9 @@ tls1_new(SSL *s) void tls1_free(SSL *s) { + if (s == NULL) + return; + free(s->tlsext_session_ticket); ssl3_free(s); } diff --git a/src/lib/libssl/ssl_lib.c b/src/lib/libssl/ssl_lib.c index 1dd518d0b8..629ad03554 100644 --- a/src/lib/libssl/ssl_lib.c +++ b/src/lib/libssl/ssl_lib.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ssl_lib.c,v 1.104 2015/06/28 00:08:27 doug Exp $ */ +/* $OpenBSD: ssl_lib.c,v 1.105 2015/07/19 20:32:18 doug Exp $ */ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * @@ -2825,6 +2825,9 @@ ssl_init_wbio_buffer(SSL *s, int push) void ssl_free_wbio_buffer(SSL *s) { + if (s == NULL) + return; + if (s->bbio == NULL) return; diff --git a/src/lib/libssl/t1_lib.c b/src/lib/libssl/t1_lib.c index b0f0de3bd8..70823bf8e7 100644 --- a/src/lib/libssl/t1_lib.c +++ b/src/lib/libssl/t1_lib.c @@ -1,4 +1,4 @@ -/* $OpenBSD: t1_lib.c,v 1.79 2015/07/17 15:50:37 doug Exp $ */ +/* $OpenBSD: t1_lib.c,v 1.80 2015/07/19 20:32:18 doug Exp $ */ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * @@ -198,6 +198,9 @@ tls1_new(SSL *s) void tls1_free(SSL *s) { + if (s == NULL) + return; + free(s->tlsext_session_ticket); ssl3_free(s); } -- cgit v1.2.3-55-g6feb