diff options
| author | tb <> | 2021-04-07 21:48:23 +0000 |
|---|---|---|
| committer | tb <> | 2021-04-07 21:48:23 +0000 |
| commit | dce38e74ea35338f295612fb140758e949815c70 (patch) | |
| tree | c54ab4f1f2b97ea5c7726b3ea1fdd28bf1be6ac5 /src | |
| parent | 0d1e2b135fbfd4ff62641488b38009f89f79c883 (diff) | |
| download | openbsd-dce38e74ea35338f295612fb140758e949815c70.tar.gz openbsd-dce38e74ea35338f295612fb140758e949815c70.tar.bz2 openbsd-dce38e74ea35338f295612fb140758e949815c70.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')
| -rw-r--r-- | src/lib/libssl/tls13_lib.c | 5 |
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 | ||
| 153 | static void | 154 | static void |
