summaryrefslogtreecommitdiff
path: root/src/lib/libssl/s3_lib.c
diff options
context:
space:
mode:
authorjsing <>2015-09-12 15:03:39 +0000
committerjsing <>2015-09-12 15:03:39 +0000
commit55878a118f9914f78e196c906ef6d76b6f2e269c (patch)
treef43b2c4f0a83343ac09872bb9dd4075c5d209246 /src/lib/libssl/s3_lib.c
parentbb3dc274c59720dc1e231a536edf176cf9687b2e (diff)
downloadopenbsd-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.c21
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
1950int
1951ssl3_handshake_msg_hdr_len(SSL *s)
1952{
1953 return (SSL_IS_DTLS(s) ? DTLS1_HM_HEADER_LENGTH :
1954 SSL3_HM_HEADER_LENGTH);
1955}
1956
1950unsigned char * 1957unsigned char *
1951ssl3_handshake_msg_start(SSL *s, uint8_t msg_type) 1958ssl3_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
1968void 1971void
@@ -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)) {