summaryrefslogtreecommitdiff
path: root/src/lib/libssl/tls13_lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libssl/tls13_lib.c')
-rw-r--r--src/lib/libssl/tls13_lib.c23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/lib/libssl/tls13_lib.c b/src/lib/libssl/tls13_lib.c
index 6876528f50..d30d28c45f 100644
--- a/src/lib/libssl/tls13_lib.c
+++ b/src/lib/libssl/tls13_lib.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: tls13_lib.c,v 1.13 2019/11/26 23:46:18 beck Exp $ */ 1/* $OpenBSD: tls13_lib.c,v 1.14 2020/01/20 13:10:37 jsing Exp $ */
2/* 2/*
3 * Copyright (c) 2018, 2019 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2018, 2019 Joel Sing <jsing@openbsd.org>
4 * Copyright (c) 2019 Bob Beck <beck@openbsd.org> 4 * Copyright (c) 2019 Bob Beck <beck@openbsd.org>
@@ -263,6 +263,7 @@ tls13_ctx_free(struct tls13_ctx *ctx)
263 if (ctx == NULL) 263 if (ctx == NULL)
264 return; 264 return;
265 265
266 tls13_error_clear(&ctx->error);
266 tls13_record_layer_free(ctx->rl); 267 tls13_record_layer_free(ctx->rl);
267 268
268 freezero(ctx, sizeof(struct tls13_ctx)); 269 freezero(ctx, sizeof(struct tls13_ctx));
@@ -340,6 +341,22 @@ tls13_legacy_wire_write_cb(const void *buf, size_t n, void *arg)
340 return tls13_legacy_wire_write(ctx->ssl, buf, n); 341 return tls13_legacy_wire_write(ctx->ssl, buf, n);
341} 342}
342 343
344static void
345tls13_legacy_error(SSL *ssl)
346{
347 struct tls13_ctx *ctx = ssl->internal->tls13;
348 int reason = ERR_R_INTERNAL_ERROR;
349
350 switch (ctx->error.code) {
351 case TLS13_ERR_VERIFY_FAILED:
352 reason = SSL_R_CERTIFICATE_VERIFY_FAILED;
353 break;
354 }
355
356 ERR_put_error(ERR_LIB_SSL, (0xfff), reason, ctx->error.file,
357 ctx->error.line);
358}
359
343int 360int
344tls13_legacy_return_code(SSL *ssl, ssize_t ret) 361tls13_legacy_return_code(SSL *ssl, ssize_t ret)
345{ 362{
@@ -359,9 +376,7 @@ tls13_legacy_return_code(SSL *ssl, ssize_t ret)
359 return 0; 376 return 0;
360 377
361 case TLS13_IO_FAILURE: 378 case TLS13_IO_FAILURE:
362 /* XXX - we need to record/map internal errors. */ 379 tls13_legacy_error(ssl);
363 if (ERR_peek_error() == 0)
364 SSLerror(ssl, ERR_R_INTERNAL_ERROR);
365 return -1; 380 return -1;
366 381
367 case TLS13_IO_WANT_POLLIN: 382 case TLS13_IO_WANT_POLLIN: