summaryrefslogtreecommitdiff
path: root/src/lib/libtls/tls_config.c
diff options
context:
space:
mode:
authorjsing <>2016-08-02 07:47:11 +0000
committerjsing <>2016-08-02 07:47:11 +0000
commitcce7b68820089fd3e362dbb39f91e53db9de4978 (patch)
tree1d5b4f201a3bc844f8bc86fcc6d120b238b50589 /src/lib/libtls/tls_config.c
parentec3f08a327189e61af9974a68fb0cd07fec485a8 (diff)
downloadopenbsd-cce7b68820089fd3e362dbb39f91e53db9de4978.tar.gz
openbsd-cce7b68820089fd3e362dbb39f91e53db9de4978.tar.bz2
openbsd-cce7b68820089fd3e362dbb39f91e53db9de4978.zip
Revert previous since it adds new symbols.
Requested by deraadt@
Diffstat (limited to 'src/lib/libtls/tls_config.c')
-rw-r--r--src/lib/libtls/tls_config.c70
1 files changed, 1 insertions, 69 deletions
diff --git a/src/lib/libtls/tls_config.c b/src/lib/libtls/tls_config.c
index 640a69e783..63054ab1e9 100644
--- a/src/lib/libtls/tls_config.c
+++ b/src/lib/libtls/tls_config.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: tls_config.c,v 1.23 2016/08/01 17:32:19 jsing Exp $ */ 1/* $OpenBSD: tls_config.c,v 1.24 2016/08/02 07:47:11 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2014 Joel Sing <jsing@openbsd.org>
4 * 4 *
@@ -166,7 +166,6 @@ tls_config_free(struct tls_config *config)
166 166
167 free(config->error.msg); 167 free(config->error.msg);
168 168
169 free(config->alpn);
170 free((char *)config->ca_file); 169 free((char *)config->ca_file);
171 free((char *)config->ca_mem); 170 free((char *)config->ca_mem);
172 free((char *)config->ca_path); 171 free((char *)config->ca_path);
@@ -250,73 +249,6 @@ tls_config_parse_protocols(uint32_t *protocols, const char *protostr)
250 return (0); 249 return (0);
251} 250}
252 251
253static int
254tls_config_parse_alpn(struct tls_config *config, const char *alpn,
255 char **alpn_data, size_t *alpn_len)
256{
257 size_t buf_len, i, len;
258 char *buf = NULL;
259 char *s = NULL;
260 char *p, *q;
261
262 free(*alpn_data);
263 *alpn_data = NULL;
264 *alpn_len = 0;
265
266 if ((buf_len = strlen(alpn) + 1) > 65535) {
267 tls_config_set_errorx(config, "alpn too large");
268 goto err;
269 }
270
271 if ((buf = malloc(buf_len)) == NULL) {
272 tls_config_set_errorx(config, "out of memory");
273 goto err;
274 }
275
276 if ((s = strdup(alpn)) == NULL) {
277 tls_config_set_errorx(config, "out of memory");
278 goto err;
279 }
280
281 i = 0;
282 q = s;
283 while ((p = strsep(&q, ",")) != NULL) {
284 if ((len = strlen(p)) == 0) {
285 tls_config_set_errorx(config,
286 "alpn protocol with zero length");
287 goto err;
288 }
289 if (len > 255) {
290 tls_config_set_errorx(config,
291 "alpn protocol too long");
292 goto err;
293 }
294 buf[i++] = len & 0xff;
295 memcpy(&buf[i], p, len);
296 i += len;
297 }
298
299 free(s);
300
301 *alpn_data = buf;
302 *alpn_len = buf_len;
303
304 return (0);
305
306 err:
307 free(buf);
308 free(s);
309
310 return (-1);
311}
312
313int
314tls_config_set_alpn(struct tls_config *config, const char *alpn)
315{
316 return tls_config_parse_alpn(config, alpn, &config->alpn,
317 &config->alpn_len);
318}
319
320int 252int
321tls_config_set_ca_file(struct tls_config *config, const char *ca_file) 253tls_config_set_ca_file(struct tls_config *config, const char *ca_file)
322{ 254{