diff options
| author | tb <> | 2026-08-29 08:41:17 +0000 |
|---|---|---|
| committer | tb <> | 2026-08-29 08:41:17 +0000 |
| commit | 6b13eef79d2dc54c1b0203f967b3fc8b8971df78 (patch) | |
| tree | 72a0856a3655e334a7c23a1030ff6db6afc9cbe5 /src | |
| parent | 1cbc9ec6252c472fb52de4c1256d43c9248dce36 (diff) | |
| download | openbsd-6b13eef79d2dc54c1b0203f967b3fc8b8971df78.tar.gz openbsd-6b13eef79d2dc54c1b0203f967b3fc8b8971df78.tar.bz2 openbsd-6b13eef79d2dc54c1b0203f967b3fc8b8971df78.zip | |
libssl: fix API misuse in legacy finished handling
This looks like a potential out of bounds read or allowing trailing garbage
in peer_finished. It's harmless because CBS_len() is compared against the
s->s3->hs.peer_finished_len a few lines up, thus it is only cosmetic.
discussed with jsing
ok kenjiro
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/libssl/ssl_clnt.c | 5 | ||||
| -rw-r--r-- | src/lib/libssl/ssl_srvr.c | 5 |
2 files changed, 6 insertions, 4 deletions
diff --git a/src/lib/libssl/ssl_clnt.c b/src/lib/libssl/ssl_clnt.c index 69221332f5..37684aba91 100644 --- a/src/lib/libssl/ssl_clnt.c +++ b/src/lib/libssl/ssl_clnt.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ssl_clnt.c,v 1.176 2026/08/21 17:15:22 tb Exp $ */ | 1 | /* $OpenBSD: ssl_clnt.c,v 1.177 2026/08/29 08:41:17 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -2348,7 +2348,8 @@ ssl3_get_server_finished(SSL *s) | |||
| 2348 | goto fatal_err; | 2348 | goto fatal_err; |
| 2349 | } | 2349 | } |
| 2350 | 2350 | ||
| 2351 | if (!CBS_mem_equal(&cbs, s->s3->hs.peer_finished, CBS_len(&cbs))) { | 2351 | if (!CBS_mem_equal(&cbs, |
| 2352 | s->s3->hs.peer_finished, s->s3->hs.peer_finished_len)) { | ||
| 2352 | al = SSL_AD_DECRYPT_ERROR; | 2353 | al = SSL_AD_DECRYPT_ERROR; |
| 2353 | SSLerror(s, SSL_R_DIGEST_CHECK_FAILED); | 2354 | SSLerror(s, SSL_R_DIGEST_CHECK_FAILED); |
| 2354 | goto fatal_err; | 2355 | goto fatal_err; |
diff --git a/src/lib/libssl/ssl_srvr.c b/src/lib/libssl/ssl_srvr.c index 43260d8065..a12f552bea 100644 --- a/src/lib/libssl/ssl_srvr.c +++ b/src/lib/libssl/ssl_srvr.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ssl_srvr.c,v 1.171 2026/08/21 17:15:22 tb Exp $ */ | 1 | /* $OpenBSD: ssl_srvr.c,v 1.172 2026/08/29 08:41:17 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -2373,7 +2373,8 @@ ssl3_get_client_finished(SSL *s) | |||
| 2373 | goto fatal_err; | 2373 | goto fatal_err; |
| 2374 | } | 2374 | } |
| 2375 | 2375 | ||
| 2376 | if (!CBS_mem_equal(&cbs, s->s3->hs.peer_finished, CBS_len(&cbs))) { | 2376 | if (!CBS_mem_equal(&cbs, |
| 2377 | s->s3->hs.peer_finished, s->s3->hs.peer_finished_len)) { | ||
| 2377 | al = SSL_AD_DECRYPT_ERROR; | 2378 | al = SSL_AD_DECRYPT_ERROR; |
| 2378 | SSLerror(s, SSL_R_DIGEST_CHECK_FAILED); | 2379 | SSLerror(s, SSL_R_DIGEST_CHECK_FAILED); |
| 2379 | goto fatal_err; | 2380 | goto fatal_err; |
