diff options
author | jsing <> | 2017-01-23 05:27:22 +0000 |
---|---|---|
committer | jsing <> | 2017-01-23 05:27:22 +0000 |
commit | 3b1c7c5973d7e6aca42940bd4e07900c35d585f5 (patch) | |
tree | 7b5846ec611e08b428cca0c6a260d563d08705e6 | |
parent | f38881420fba9a207cd725b6a35181faeecf26b9 (diff) | |
download | openbsd-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.h | 7 | ||||
-rw-r--r-- | src/lib/libssl/ssl_locl.h | 8 | ||||
-rw-r--r-- | src/lib/libssl/ssl_sess.c | 48 |
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 | ||
375 | typedef struct ssl_session_internal_st { | 375 | typedef 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, | |||
185 | int | 185 | int |
186 | SSL_SESSION_set_ex_data(SSL_SESSION *s, int idx, void *arg) | 186 | SSL_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 | ||
191 | void * | 191 | void * |
192 | SSL_SESSION_get_ex_data(const SSL_SESSION *s, int idx) | 192 | SSL_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 | ||
197 | SSL_SESSION * | 197 | SSL_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) | |||
962 | static void | 962 | static void |
963 | SSL_SESSION_list_remove(SSL_CTX *ctx, SSL_SESSION *s) | 963 | SSL_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 | ||
994 | static void | 994 | static void |
995 | SSL_SESSION_list_add(SSL_CTX *ctx, SSL_SESSION *s) | 995 | SSL_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 | } |