From 6b13eef79d2dc54c1b0203f967b3fc8b8971df78 Mon Sep 17 00:00:00 2001 From: tb <> Date: Sat, 29 Aug 2026 08:41:17 +0000 Subject: 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 --- src/lib/libssl/ssl_clnt.c | 5 +++-- src/lib/libssl/ssl_srvr.c | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) (limited to 'src/lib/libssl') 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 @@ -/* $OpenBSD: ssl_clnt.c,v 1.176 2026/08/21 17:15:22 tb Exp $ */ +/* $OpenBSD: ssl_clnt.c,v 1.177 2026/08/29 08:41:17 tb Exp $ */ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * @@ -2348,7 +2348,8 @@ ssl3_get_server_finished(SSL *s) goto fatal_err; } - if (!CBS_mem_equal(&cbs, s->s3->hs.peer_finished, CBS_len(&cbs))) { + if (!CBS_mem_equal(&cbs, + s->s3->hs.peer_finished, s->s3->hs.peer_finished_len)) { al = SSL_AD_DECRYPT_ERROR; SSLerror(s, SSL_R_DIGEST_CHECK_FAILED); 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 @@ -/* $OpenBSD: ssl_srvr.c,v 1.171 2026/08/21 17:15:22 tb Exp $ */ +/* $OpenBSD: ssl_srvr.c,v 1.172 2026/08/29 08:41:17 tb Exp $ */ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * @@ -2373,7 +2373,8 @@ ssl3_get_client_finished(SSL *s) goto fatal_err; } - if (!CBS_mem_equal(&cbs, s->s3->hs.peer_finished, CBS_len(&cbs))) { + if (!CBS_mem_equal(&cbs, + s->s3->hs.peer_finished, s->s3->hs.peer_finished_len)) { al = SSL_AD_DECRYPT_ERROR; SSLerror(s, SSL_R_DIGEST_CHECK_FAILED); goto fatal_err; -- cgit v1.2.3-55-g6feb