summaryrefslogtreecommitdiff
path: root/src/lib/libssl/ssl_sess.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libssl/ssl_sess.c')
-rw-r--r--src/lib/libssl/ssl_sess.c40
1 files changed, 13 insertions, 27 deletions
diff --git a/src/lib/libssl/ssl_sess.c b/src/lib/libssl/ssl_sess.c
index b29115862b..0b1c655820 100644
--- a/src/lib/libssl/ssl_sess.c
+++ b/src/lib/libssl/ssl_sess.c
@@ -301,29 +301,19 @@ ssl_get_new_session(SSL *s, int session)
301 } 301 }
302 302
303 if (session) { 303 if (session) {
304 if (s->version == SSL2_VERSION) { 304 switch (s->version) {
305 ss->ssl_version = SSL2_VERSION; 305 case SSL3_VERSION:
306 ss->session_id_length = SSL2_SSL_SESSION_ID_LENGTH; 306 case TLS1_VERSION:
307 } else if (s->version == SSL3_VERSION) { 307 case TLS1_1_VERSION:
308 ss->ssl_version = SSL3_VERSION; 308 case TLS1_2_VERSION:
309 case DTLS1_BAD_VER:
310 case DTLS1_VERSION:
311 ss->ssl_version = s->version;
309 ss->session_id_length = SSL3_SSL_SESSION_ID_LENGTH; 312 ss->session_id_length = SSL3_SSL_SESSION_ID_LENGTH;
310 } else if (s->version == TLS1_VERSION) { 313 break;
311 ss->ssl_version = TLS1_VERSION; 314 default:
312 ss->session_id_length = SSL3_SSL_SESSION_ID_LENGTH; 315 SSLerr(SSL_F_SSL_GET_NEW_SESSION,
313 } else if (s->version == TLS1_1_VERSION) { 316 SSL_R_UNSUPPORTED_SSL_VERSION);
314 ss->ssl_version = TLS1_1_VERSION;
315 ss->session_id_length = SSL3_SSL_SESSION_ID_LENGTH;
316 } else if (s->version == TLS1_2_VERSION) {
317 ss->ssl_version = TLS1_2_VERSION;
318 ss->session_id_length = SSL3_SSL_SESSION_ID_LENGTH;
319 } else if (s->version == DTLS1_BAD_VER) {
320 ss->ssl_version = DTLS1_BAD_VER;
321 ss->session_id_length = SSL3_SSL_SESSION_ID_LENGTH;
322 } else if (s->version == DTLS1_VERSION) {
323 ss->ssl_version = DTLS1_VERSION;
324 ss->session_id_length = SSL3_SSL_SESSION_ID_LENGTH;
325 } else {
326 SSLerr(SSL_F_SSL_GET_NEW_SESSION, SSL_R_UNSUPPORTED_SSL_VERSION);
327 SSL_SESSION_free(ss); 317 SSL_SESSION_free(ss);
328 return (0); 318 return (0);
329 } 319 }
@@ -359,11 +349,7 @@ ssl_get_new_session(SSL *s, int session)
359 SSL_SESSION_free(ss); 349 SSL_SESSION_free(ss);
360 return (0); 350 return (0);
361 } 351 }
362 /* If the session length was shrunk and we're SSLv2, pad it */ 352 ss->session_id_length = tmp;
363 if ((tmp < ss->session_id_length) && (s->version == SSL2_VERSION))
364 memset(ss->session_id + tmp, 0, ss->session_id_length - tmp);
365 else
366 ss->session_id_length = tmp;
367 /* Finally, check for a conflict */ 353 /* Finally, check for a conflict */
368 if (SSL_has_matching_session_id(s, ss->session_id, 354 if (SSL_has_matching_session_id(s, ss->session_id,
369 ss->session_id_length)) { 355 ss->session_id_length)) {