[PATCH] crypto/armv8: validate xform auth key length

Jack Bond-Preston jack.bond-preston at foss.arm.com
Tue Oct 13 15:35:59 CEST 2026


Validate that the provided rte_crypto_auth_xform's key length is not
too large, and that the provided data pointer is not NULL.

Previously, providing a key which has a size > SHA_BLOCK_MAX will cause
the key memcpy to write out of bounds. Since the rte_crypto_auth_xform
documentation states that it is the user's responsibility to validate
the authentication key length, this is not a bug in DPDK. However,
other PMDs are validating this, and it is more user-friendly to do so -
with negligible performance impact.

Reported-by: pengpeng <pengpeng at iscas.ac.cn>
Signed-off-by: Jack Bond-Preston <jack.bond-preston at foss.arm.com>
Reviewed-by: Wathsala Vithanage <wathsala.vithanage at arm.com>
---
 drivers/crypto/armv8/rte_armv8_pmd.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/crypto/armv8/rte_armv8_pmd.c b/drivers/crypto/armv8/rte_armv8_pmd.c
index a7caac186d..f4ddfb6395 100644
--- a/drivers/crypto/armv8/rte_armv8_pmd.c
+++ b/drivers/crypto/armv8/rte_armv8_pmd.c
@@ -262,6 +262,13 @@ auth_set_prerequisites(struct armv8_crypto_session *sess,
 	uint8_t partial[64] = { 0 };
 	int error;
 
+	/* Validate key */
+	if (xform->auth.key.data == NULL ||
+			xform->auth.key.length > SHA_BLOCK_MAX) {
+		ARMV8_CRYPTO_LOG_ERR("Invalid authentication key provided.");
+		return -1;
+	}
+
 	switch (xform->auth.algo) {
 	case RTE_CRYPTO_AUTH_SHA1_HMAC:
 		/*
-- 
2.43.0



More information about the dev mailing list