summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authortb <>2021-04-07 21:48:23 +0000
committertb <>2021-04-07 21:48:23 +0000
commit1ff6ebe4aa0a51558d12a52b713d6dfdc4486249 (patch)
treec54ab4f1f2b97ea5c7726b3ea1fdd28bf1be6ac5 /src/lib
parent6527abaa41446de00a9a123155b06733561db20d (diff)
downloadopenbsd-1ff6ebe4aa0a51558d12a52b713d6dfdc4486249.tar.gz
openbsd-1ff6ebe4aa0a51558d12a52b713d6dfdc4486249.tar.bz2
openbsd-1ff6ebe4aa0a51558d12a52b713d6dfdc4486249.zip
Avoid clobbering the error code when sending an alert
In order to fail gracefully on encountering a self-signed cert, curl looks at the top-most error on the stack and needs specific SSL_R_ error codes. This mechanism was broken when the tls13_alert_sent_cb() was added after people complained about unhelpful unknown errors. Fix this by only setting the error code from a fatal alert if no error has been set previously. Issue reported by Christopher Reid ok jsing
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libssl/tls13_lib.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/lib/libssl/tls13_lib.c b/src/lib/libssl/tls13_lib.c
index 9dbb7d6430..f064521c8b 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.58 2021/03/21 18:36:34 jsing Exp $ */ 1/* $OpenBSD: tls13_lib.c,v 1.59 2021/04/07 21:48:23 tb 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>
@@ -147,7 +147,8 @@ tls13_alert_sent_cb(uint8_t alert_desc, void *arg)
147 } 147 }
148 148
149 /* All other alerts are treated as fatal in TLSv1.3. */ 149 /* All other alerts are treated as fatal in TLSv1.3. */
150 SSLerror(ctx->ssl, SSL_AD_REASON_OFFSET + alert_desc); 150 if (ctx->error.code == 0)
151 SSLerror(ctx->ssl, SSL_AD_REASON_OFFSET + alert_desc);
151} 152}
152 153
153static void 154static void