diff options
| author | jsing <> | 2014-08-23 14:52:41 +0000 |
|---|---|---|
| committer | jsing <> | 2014-08-23 14:52:41 +0000 |
| commit | bd839944b9bc1d47b9efedea83ec092dc1975a4e (patch) | |
| tree | 9e39489ad7ca821461a8b5fdd5dee2a80c25c1e2 /src/lib/libssl/s3_clnt.c | |
| parent | 0da35c5527cadb4d9d5c40167d67c630c96b3878 (diff) | |
| download | openbsd-bd839944b9bc1d47b9efedea83ec092dc1975a4e.tar.gz openbsd-bd839944b9bc1d47b9efedea83ec092dc1975a4e.tar.bz2 openbsd-bd839944b9bc1d47b9efedea83ec092dc1975a4e.zip | |
Replace the remaining ssl3_get_cipher_by_char() calls with n2s() and
ssl3_get_cipher_by_id().
ok bcook@
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libssl/s3_clnt.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/lib/libssl/s3_clnt.c b/src/lib/libssl/s3_clnt.c index 848de8c268..9ccc67acb9 100644 --- a/src/lib/libssl/s3_clnt.c +++ b/src/lib/libssl/s3_clnt.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: s3_clnt.c,v 1.87 2014/08/11 01:10:42 jsing Exp $ */ | 1 | /* $OpenBSD: s3_clnt.c,v 1.88 2014/08/23 14:52:41 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 | * |
| @@ -775,9 +775,10 @@ ssl3_get_server_hello(SSL *s) | |||
| 775 | { | 775 | { |
| 776 | STACK_OF(SSL_CIPHER) *sk; | 776 | STACK_OF(SSL_CIPHER) *sk; |
| 777 | const SSL_CIPHER *c; | 777 | const SSL_CIPHER *c; |
| 778 | unsigned char *p, *d; | 778 | unsigned char *p, *q, *d; |
| 779 | int i, al, ok; | 779 | int i, al, ok; |
| 780 | unsigned int j; | 780 | unsigned int j, cipher_id; |
| 781 | uint16_t cipher_value; | ||
| 781 | long n; | 782 | long n; |
| 782 | 783 | ||
| 783 | n = s->method->ssl_get_message(s, SSL3_ST_CR_SRVR_HELLO_A, | 784 | n = s->method->ssl_get_message(s, SSL3_ST_CR_SRVR_HELLO_A, |
| @@ -830,7 +831,7 @@ ssl3_get_server_hello(SSL *s) | |||
| 830 | p += SSL3_RANDOM_SIZE; | 831 | p += SSL3_RANDOM_SIZE; |
| 831 | 832 | ||
| 832 | /* get the session-id */ | 833 | /* get the session-id */ |
| 833 | j= *(p++); | 834 | j = *(p++); |
| 834 | 835 | ||
| 835 | if ((j > sizeof s->session->session_id) || | 836 | if ((j > sizeof s->session->session_id) || |
| 836 | (j > SSL3_SESSION_ID_SIZE)) { | 837 | (j > SSL3_SESSION_ID_SIZE)) { |
| @@ -843,6 +844,11 @@ ssl3_get_server_hello(SSL *s) | |||
| 843 | if (p + j + 2 - d > n) | 844 | if (p + j + 2 - d > n) |
| 844 | goto truncated; | 845 | goto truncated; |
| 845 | 846 | ||
| 847 | /* Get the cipher value. */ | ||
| 848 | q = p + j; | ||
| 849 | n2s(q, cipher_value); | ||
| 850 | cipher_id = SSL3_CK_ID | cipher_value; | ||
| 851 | |||
| 846 | /* | 852 | /* |
| 847 | * Check if we want to resume the session based on external | 853 | * Check if we want to resume the session based on external |
| 848 | * pre-shared secret | 854 | * pre-shared secret |
| @@ -854,7 +860,7 @@ ssl3_get_server_hello(SSL *s) | |||
| 854 | &s->session->master_key_length, NULL, &pref_cipher, | 860 | &s->session->master_key_length, NULL, &pref_cipher, |
| 855 | s->tls_session_secret_cb_arg)) { | 861 | s->tls_session_secret_cb_arg)) { |
| 856 | s->session->cipher = pref_cipher ? | 862 | s->session->cipher = pref_cipher ? |
| 857 | pref_cipher : ssl3_get_cipher_by_char(p + j); | 863 | pref_cipher : ssl3_get_cipher_by_id(cipher_id); |
| 858 | s->s3->flags |= SSL3_FLAGS_CCS_OK; | 864 | s->s3->flags |= SSL3_FLAGS_CCS_OK; |
| 859 | } | 865 | } |
| 860 | } | 866 | } |
| @@ -885,10 +891,11 @@ ssl3_get_server_hello(SSL *s) | |||
| 885 | } | 891 | } |
| 886 | } | 892 | } |
| 887 | s->session->session_id_length = j; | 893 | s->session->session_id_length = j; |
| 888 | memcpy(s->session->session_id,p,j); /* j could be 0 */ | 894 | memcpy(s->session->session_id, p, j); /* j could be 0 */ |
| 889 | } | 895 | } |
| 890 | p += j; | 896 | p += j; |
| 891 | c = ssl3_get_cipher_by_char(p); | 897 | |
| 898 | c = ssl3_get_cipher_by_id(cipher_id); | ||
| 892 | if (c == NULL) { | 899 | if (c == NULL) { |
| 893 | /* unknown cipher */ | 900 | /* unknown cipher */ |
| 894 | al = SSL_AD_ILLEGAL_PARAMETER; | 901 | al = SSL_AD_ILLEGAL_PARAMETER; |
| @@ -896,6 +903,7 @@ ssl3_get_server_hello(SSL *s) | |||
| 896 | SSL_R_UNKNOWN_CIPHER_RETURNED); | 903 | SSL_R_UNKNOWN_CIPHER_RETURNED); |
| 897 | goto f_err; | 904 | goto f_err; |
| 898 | } | 905 | } |
| 906 | |||
| 899 | /* TLS v1.2 only ciphersuites require v1.2 or later */ | 907 | /* TLS v1.2 only ciphersuites require v1.2 or later */ |
| 900 | if ((c->algorithm_ssl & SSL_TLSV1_2) && | 908 | if ((c->algorithm_ssl & SSL_TLSV1_2) && |
| 901 | (TLS1_get_version(s) < TLS1_2_VERSION)) { | 909 | (TLS1_get_version(s) < TLS1_2_VERSION)) { |
