diff options
author | jsing <> | 2015-09-12 15:03:39 +0000 |
---|---|---|
committer | jsing <> | 2015-09-12 15:03:39 +0000 |
commit | 55878a118f9914f78e196c906ef6d76b6f2e269c (patch) | |
tree | f43b2c4f0a83343ac09872bb9dd4075c5d209246 /src/lib/libssl/s3_lib.c | |
parent | bb3dc274c59720dc1e231a536edf176cf9687b2e (diff) | |
download | openbsd-55878a118f9914f78e196c906ef6d76b6f2e269c.tar.gz openbsd-55878a118f9914f78e196c906ef6d76b6f2e269c.tar.bz2 openbsd-55878a118f9914f78e196c906ef6d76b6f2e269c.zip |
Move handshake message header length determination into a separate
ssl3_handshake_msg_hdr_len() function. Use this to correct several places
that have magic numbers with header lengths hardcoded as '4'.
ok beck@
Diffstat (limited to 'src/lib/libssl/s3_lib.c')
-rw-r--r-- | src/lib/libssl/s3_lib.c | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/src/lib/libssl/s3_lib.c b/src/lib/libssl/s3_lib.c index 1a619e3d30..912ac8dbdb 100644 --- a/src/lib/libssl/s3_lib.c +++ b/src/lib/libssl/s3_lib.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: s3_lib.c,v 1.104 2015/09/11 18:08:21 jsing Exp $ */ | 1 | /* $OpenBSD: s3_lib.c,v 1.105 2015/09/12 15:03:39 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 | * |
@@ -1947,22 +1947,25 @@ ssl3_pending(const SSL *s) | |||
1947 | s->s3->rrec.length : 0; | 1947 | s->s3->rrec.length : 0; |
1948 | } | 1948 | } |
1949 | 1949 | ||
1950 | int | ||
1951 | ssl3_handshake_msg_hdr_len(SSL *s) | ||
1952 | { | ||
1953 | return (SSL_IS_DTLS(s) ? DTLS1_HM_HEADER_LENGTH : | ||
1954 | SSL3_HM_HEADER_LENGTH); | ||
1955 | } | ||
1956 | |||
1950 | unsigned char * | 1957 | unsigned char * |
1951 | ssl3_handshake_msg_start(SSL *s, uint8_t msg_type) | 1958 | ssl3_handshake_msg_start(SSL *s, uint8_t msg_type) |
1952 | { | 1959 | { |
1953 | unsigned char *d, *p; | 1960 | unsigned char *d, *p; |
1954 | int hdr_len; | ||
1955 | 1961 | ||
1956 | d = p = (unsigned char *)s->init_buf->data; | 1962 | d = p = (unsigned char *)s->init_buf->data; |
1957 | 1963 | ||
1958 | hdr_len = SSL_IS_DTLS(s) ? DTLS1_HM_HEADER_LENGTH : | ||
1959 | SSL3_HM_HEADER_LENGTH; | ||
1960 | |||
1961 | /* Handshake message type and length. */ | 1964 | /* Handshake message type and length. */ |
1962 | *(p++) = msg_type; | 1965 | *(p++) = msg_type; |
1963 | l2n3(0, p); | 1966 | l2n3(0, p); |
1964 | 1967 | ||
1965 | return (d + hdr_len); | 1968 | return (d + ssl3_handshake_msg_hdr_len(s)); |
1966 | } | 1969 | } |
1967 | 1970 | ||
1968 | void | 1971 | void |
@@ -1970,18 +1973,14 @@ ssl3_handshake_msg_finish(SSL *s, unsigned int len) | |||
1970 | { | 1973 | { |
1971 | unsigned char *d, *p; | 1974 | unsigned char *d, *p; |
1972 | uint8_t msg_type; | 1975 | uint8_t msg_type; |
1973 | int hdr_len; | ||
1974 | 1976 | ||
1975 | d = p = (unsigned char *)s->init_buf->data; | 1977 | d = p = (unsigned char *)s->init_buf->data; |
1976 | 1978 | ||
1977 | hdr_len = SSL_IS_DTLS(s) ? DTLS1_HM_HEADER_LENGTH : | ||
1978 | SSL3_HM_HEADER_LENGTH; | ||
1979 | |||
1980 | /* Handshake message length. */ | 1979 | /* Handshake message length. */ |
1981 | msg_type = *(p++); | 1980 | msg_type = *(p++); |
1982 | l2n3(len, p); | 1981 | l2n3(len, p); |
1983 | 1982 | ||
1984 | s->init_num = hdr_len + (int)len; | 1983 | s->init_num = ssl3_handshake_msg_hdr_len(s) + (int)len; |
1985 | s->init_off = 0; | 1984 | s->init_off = 0; |
1986 | 1985 | ||
1987 | if (SSL_IS_DTLS(s)) { | 1986 | if (SSL_IS_DTLS(s)) { |