summaryrefslogtreecommitdiff
path: root/src/lib/libssl/tls_content.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libssl/tls_content.c')
-rw-r--r--src/lib/libssl/tls_content.c25
1 files changed, 20 insertions, 5 deletions
diff --git a/src/lib/libssl/tls_content.c b/src/lib/libssl/tls_content.c
index ede178f84c..726de0fdc4 100644
--- a/src/lib/libssl/tls_content.c
+++ b/src/lib/libssl/tls_content.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: tls_content.c,v 1.1 2021/09/04 16:26:12 jsing Exp $ */ 1/* $OpenBSD: tls_content.c,v 1.2 2022/11/11 17:15:27 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2020 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2020 Joel Sing <jsing@openbsd.org>
4 * 4 *
@@ -26,7 +26,7 @@ struct tls_content {
26 uint16_t epoch; 26 uint16_t epoch;
27 27
28 const uint8_t *data; 28 const uint8_t *data;
29 size_t len; 29 size_t data_len;
30 CBS cbs; 30 CBS cbs;
31}; 31};
32 32
@@ -39,7 +39,7 @@ tls_content_new(void)
39void 39void
40tls_content_clear(struct tls_content *content) 40tls_content_clear(struct tls_content *content)
41{ 41{
42 freezero((void *)content->data, content->len); 42 freezero((void *)content->data, content->data_len);
43 memset(content, 0, sizeof(*content)); 43 memset(content, 0, sizeof(*content));
44} 44}
45 45
@@ -113,9 +113,24 @@ tls_content_set_data(struct tls_content *content, uint8_t type,
113 113
114 content->type = type; 114 content->type = type;
115 content->data = data; 115 content->data = data;
116 content->len = data_len; 116 content->data_len = data_len;
117 117
118 CBS_init(&content->cbs, content->data, content->len); 118 CBS_init(&content->cbs, content->data, content->data_len);
119}
120
121int
122tls_content_set_bounds(struct tls_content *content, size_t offset, size_t len)
123{
124 size_t content_len;
125
126 content_len = offset + len;
127 if (content_len < len)
128 return 0;
129 if (content_len > content->data_len)
130 return 0;
131
132 CBS_init(&content->cbs, content->data, content_len);
133 return CBS_skip(&content->cbs, offset);
119} 134}
120 135
121static ssize_t 136static ssize_t