summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjsing <>2017-01-23 05:27:22 +0000
committerjsing <>2017-01-23 05:27:22 +0000
commit3b1c7c5973d7e6aca42940bd4e07900c35d585f5 (patch)
tree7b5846ec611e08b428cca0c6a260d563d08705e6
parentf38881420fba9a207cd725b6a35181faeecf26b9 (diff)
downloadopenbsd-3b1c7c5973d7e6aca42940bd4e07900c35d585f5.tar.gz
openbsd-3b1c7c5973d7e6aca42940bd4e07900c35d585f5.tar.bz2
openbsd-3b1c7c5973d7e6aca42940bd4e07900c35d585f5.zip
Move ex_data, next and prev from SSL_SESSION to internal.
ok beck@
-rw-r--r--src/lib/libssl/ssl.h7
-rw-r--r--src/lib/libssl/ssl_locl.h8
-rw-r--r--src/lib/libssl/ssl_sess.c48
3 files changed, 32 insertions, 31 deletions
diff --git a/src/lib/libssl/ssl.h b/src/lib/libssl/ssl.h
index 9fc6c5e976..99ac44d769 100644
--- a/src/lib/libssl/ssl.h
+++ b/src/lib/libssl/ssl.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl.h,v 1.112 2017/01/23 05:13:02 jsing Exp $ */ 1/* $OpenBSD: ssl.h,v 1.113 2017/01/23 05:27:22 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -496,11 +496,6 @@ struct ssl_session_st {
496 496
497 STACK_OF(SSL_CIPHER) *ciphers; /* shared ciphers? */ 497 STACK_OF(SSL_CIPHER) *ciphers; /* shared ciphers? */
498 498
499 CRYPTO_EX_DATA ex_data; /* application specific data */
500
501 /* These are used to make removal of session-ids more
502 * efficient and to implement a maximum cache size. */
503 struct ssl_session_st *prev, *next;
504 char *tlsext_hostname; 499 char *tlsext_hostname;
505 500
506 /* RFC4507 info */ 501 /* RFC4507 info */
diff --git a/src/lib/libssl/ssl_locl.h b/src/lib/libssl/ssl_locl.h
index 83ffb1103f..9ea22bac05 100644
--- a/src/lib/libssl/ssl_locl.h
+++ b/src/lib/libssl/ssl_locl.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl_locl.h,v 1.156 2017/01/23 05:13:02 jsing Exp $ */ 1/* $OpenBSD: ssl_locl.h,v 1.157 2017/01/23 05:27:22 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -373,6 +373,12 @@ __BEGIN_HIDDEN_DECLS
373#define NAMED_CURVE_TYPE 3 373#define NAMED_CURVE_TYPE 3
374 374
375typedef struct ssl_session_internal_st { 375typedef struct ssl_session_internal_st {
376 CRYPTO_EX_DATA ex_data; /* application specific data */
377
378 /* These are used to make removal of session-ids more
379 * efficient and to implement a maximum cache size. */
380 struct ssl_session_st *prev, *next;
381
376 /* Used to indicate that session resumption is not allowed. 382 /* Used to indicate that session resumption is not allowed.
377 * Applications can also set this bit for a new session via 383 * Applications can also set this bit for a new session via
378 * not_resumable_session_cb to disable session caching and tickets. */ 384 * not_resumable_session_cb to disable session caching and tickets. */
diff --git a/src/lib/libssl/ssl_sess.c b/src/lib/libssl/ssl_sess.c
index c114e6ec07..4a7650fd9d 100644
--- a/src/lib/libssl/ssl_sess.c
+++ b/src/lib/libssl/ssl_sess.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl_sess.c,v 1.60 2017/01/23 05:13:02 jsing Exp $ */ 1/* $OpenBSD: ssl_sess.c,v 1.61 2017/01/23 05:27:22 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -185,13 +185,13 @@ SSL_SESSION_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
185int 185int
186SSL_SESSION_set_ex_data(SSL_SESSION *s, int idx, void *arg) 186SSL_SESSION_set_ex_data(SSL_SESSION *s, int idx, void *arg)
187{ 187{
188 return (CRYPTO_set_ex_data(&s->ex_data, idx, arg)); 188 return (CRYPTO_set_ex_data(&s->internal->ex_data, idx, arg));
189} 189}
190 190
191void * 191void *
192SSL_SESSION_get_ex_data(const SSL_SESSION *s, int idx) 192SSL_SESSION_get_ex_data(const SSL_SESSION *s, int idx)
193{ 193{
194 return (CRYPTO_get_ex_data(&s->ex_data, idx)); 194 return (CRYPTO_get_ex_data(&s->internal->ex_data, idx));
195} 195}
196 196
197SSL_SESSION * 197SSL_SESSION *
@@ -213,8 +213,8 @@ SSL_SESSION_new(void)
213 ss->references = 1; 213 ss->references = 1;
214 ss->timeout=60*5+4; /* 5 minute timeout by default */ 214 ss->timeout=60*5+4; /* 5 minute timeout by default */
215 ss->time = time(NULL); 215 ss->time = time(NULL);
216 ss->prev = NULL; 216 ss->internal->prev = NULL;
217 ss->next = NULL; 217 ss->internal->next = NULL;
218 ss->tlsext_hostname = NULL; 218 ss->tlsext_hostname = NULL;
219 219
220 ss->internal->tlsext_ecpointformatlist_length = 0; 220 ss->internal->tlsext_ecpointformatlist_length = 0;
@@ -222,7 +222,7 @@ SSL_SESSION_new(void)
222 ss->internal->tlsext_ellipticcurvelist_length = 0; 222 ss->internal->tlsext_ellipticcurvelist_length = 0;
223 ss->internal->tlsext_ellipticcurvelist = NULL; 223 ss->internal->tlsext_ellipticcurvelist = NULL;
224 224
225 CRYPTO_new_ex_data(CRYPTO_EX_INDEX_SSL_SESSION, ss, &ss->ex_data); 225 CRYPTO_new_ex_data(CRYPTO_EX_INDEX_SSL_SESSION, ss, &ss->internal->ex_data);
226 226
227 return (ss); 227 return (ss);
228} 228}
@@ -695,7 +695,7 @@ SSL_SESSION_free(SSL_SESSION *ss)
695 if (i > 0) 695 if (i > 0)
696 return; 696 return;
697 697
698 CRYPTO_free_ex_data(CRYPTO_EX_INDEX_SSL_SESSION, ss, &ss->ex_data); 698 CRYPTO_free_ex_data(CRYPTO_EX_INDEX_SSL_SESSION, ss, &ss->internal->ex_data);
699 699
700 explicit_bzero(ss->master_key, sizeof ss->master_key); 700 explicit_bzero(ss->master_key, sizeof ss->master_key);
701 explicit_bzero(ss->session_id, sizeof ss->session_id); 701 explicit_bzero(ss->session_id, sizeof ss->session_id);
@@ -962,50 +962,50 @@ ssl_clear_bad_session(SSL *s)
962static void 962static void
963SSL_SESSION_list_remove(SSL_CTX *ctx, SSL_SESSION *s) 963SSL_SESSION_list_remove(SSL_CTX *ctx, SSL_SESSION *s)
964{ 964{
965 if ((s->next == NULL) || (s->prev == NULL)) 965 if ((s->internal->next == NULL) || (s->internal->prev == NULL))
966 return; 966 return;
967 967
968 if (s->next == (SSL_SESSION *)&(ctx->internal->session_cache_tail)) { 968 if (s->internal->next == (SSL_SESSION *)&(ctx->internal->session_cache_tail)) {
969 /* last element in list */ 969 /* last element in list */
970 if (s->prev == (SSL_SESSION *)&(ctx->internal->session_cache_head)) { 970 if (s->internal->prev == (SSL_SESSION *)&(ctx->internal->session_cache_head)) {
971 /* only one element in list */ 971 /* only one element in list */
972 ctx->internal->session_cache_head = NULL; 972 ctx->internal->session_cache_head = NULL;
973 ctx->internal->session_cache_tail = NULL; 973 ctx->internal->session_cache_tail = NULL;
974 } else { 974 } else {
975 ctx->internal->session_cache_tail = s->prev; 975 ctx->internal->session_cache_tail = s->internal->prev;
976 s->prev->next = 976 s->internal->prev->internal->next =
977 (SSL_SESSION *)&(ctx->internal->session_cache_tail); 977 (SSL_SESSION *)&(ctx->internal->session_cache_tail);
978 } 978 }
979 } else { 979 } else {
980 if (s->prev == (SSL_SESSION *)&(ctx->internal->session_cache_head)) { 980 if (s->internal->prev == (SSL_SESSION *)&(ctx->internal->session_cache_head)) {
981 /* first element in list */ 981 /* first element in list */
982 ctx->internal->session_cache_head = s->next; 982 ctx->internal->session_cache_head = s->internal->next;
983 s->next->prev = 983 s->internal->next->internal->prev =
984 (SSL_SESSION *)&(ctx->internal->session_cache_head); 984 (SSL_SESSION *)&(ctx->internal->session_cache_head);
985 } else { 985 } else {
986 /* middle of list */ 986 /* middle of list */
987 s->next->prev = s->prev; 987 s->internal->next->internal->prev = s->internal->prev;
988 s->prev->next = s->next; 988 s->internal->prev->internal->next = s->internal->next;
989 } 989 }
990 } 990 }
991 s->prev = s->next = NULL; 991 s->internal->prev = s->internal->next = NULL;
992} 992}
993 993
994static void 994static void
995SSL_SESSION_list_add(SSL_CTX *ctx, SSL_SESSION *s) 995SSL_SESSION_list_add(SSL_CTX *ctx, SSL_SESSION *s)
996{ 996{
997 if ((s->next != NULL) && (s->prev != NULL)) 997 if ((s->internal->next != NULL) && (s->internal->prev != NULL))
998 SSL_SESSION_list_remove(ctx, s); 998 SSL_SESSION_list_remove(ctx, s);
999 999
1000 if (ctx->internal->session_cache_head == NULL) { 1000 if (ctx->internal->session_cache_head == NULL) {
1001 ctx->internal->session_cache_head = s; 1001 ctx->internal->session_cache_head = s;
1002 ctx->internal->session_cache_tail = s; 1002 ctx->internal->session_cache_tail = s;
1003 s->prev = (SSL_SESSION *)&(ctx->internal->session_cache_head); 1003 s->internal->prev = (SSL_SESSION *)&(ctx->internal->session_cache_head);
1004 s->next = (SSL_SESSION *)&(ctx->internal->session_cache_tail); 1004 s->internal->next = (SSL_SESSION *)&(ctx->internal->session_cache_tail);
1005 } else { 1005 } else {
1006 s->next = ctx->internal->session_cache_head; 1006 s->internal->next = ctx->internal->session_cache_head;
1007 s->next->prev = s; 1007 s->internal->next->internal->prev = s;
1008 s->prev = (SSL_SESSION *)&(ctx->internal->session_cache_head); 1008 s->internal->prev = (SSL_SESSION *)&(ctx->internal->session_cache_head);
1009 ctx->internal->session_cache_head = s; 1009 ctx->internal->session_cache_head = s;
1010 } 1010 }
1011} 1011}