Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 29 Jul 2026 17:49:00 +0000
From:      Mark Johnston <markj@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Cc:        John Baldwin <jhb@FreeBSD.org>
Subject:   git: 88f1161ab0df - stable/14 - OCF: Add a fail point to inject EBADMSG decryption errors
Message-ID:  <6a6a3d0c.3ae8e.3a8b9715@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch stable/14 has been updated by markj:

URL: https://cgit.FreeBSD.org/src/commit/?id=88f1161ab0df54b798a1aba0628b8a610e869729

commit 88f1161ab0df54b798a1aba0628b8a610e869729
Author:     John Baldwin <jhb@FreeBSD.org>
AuthorDate: 2026-07-27 15:36:22 +0000
Commit:     Mark Johnston <markj@FreeBSD.org>
CommitDate: 2026-07-29 17:48:54 +0000

    OCF: Add a fail point to inject EBADMSG decryption errors
    
    Approved by:    so
    Security:       FreeBSD-SA-26:52.if_wg
    Security:       CVE-2026-58085
    Reviewed by:    markj
    Sponsored by:   Chelsio Communications
---
 sys/opencrypto/crypto.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/sys/opencrypto/crypto.c b/sys/opencrypto/crypto.c
index e840d514fcd5..907bc34b7b0d 100644
--- a/sys/opencrypto/crypto.c
+++ b/sys/opencrypto/crypto.c
@@ -61,6 +61,7 @@
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/counter.h>
+#include <sys/fail.h>
 #include <sys/kernel.h>
 #include <sys/kthread.h>
 #include <sys/linker.h>
@@ -145,6 +146,9 @@ static	struct mtx crypto_q_mtx;
 SYSCTL_NODE(_kern, OID_AUTO, crypto, CTLFLAG_RW, 0,
     "In-kernel cryptography");
 
+static SYSCTL_NODE(_debug_fail_point, OID_AUTO, crypto, CTLFLAG_RW, 0,
+    "OCF fail points");
+
 /*
  * Taskqueue used to dispatch the crypto requests submitted with
  * crypto_dispatch_async .
@@ -1679,6 +1683,18 @@ crypto_done(struct cryptop *crp)
 	KASSERT((crp->crp_flags & CRYPTO_F_DONE) == 0,
 		("crypto_done: op already done, flags 0x%x", crp->crp_flags));
 	crp->crp_flags |= CRYPTO_F_DONE;
+
+	if (crp->crp_etype == 0) {
+		switch (crp->crp_session->csp.csp_mode) {
+		case CSP_MODE_DIGEST:
+		case CSP_MODE_AEAD:
+			if ((crp->crp_op & CRYPTO_OP_VERIFY_DIGEST) != 0)
+				KFAIL_POINT_CODE(_debug_fail_point_crypto,
+				    inject_badmsg, crp->crp_etype = EBADMSG);
+			break;
+		}
+	}
+
 	if (crp->crp_etype != 0)
 		CRYPTOSTAT_INC(cs_errs);
 


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6a6a3d0c.3ae8e.3a8b9715>