From 09898e96cd0eda3cdbf4455b8b6c46e5d0ac2656 Mon Sep 17 00:00:00 2001 From: ouki Date: Sun, 25 Oct 2026 16:20:14 +0900 Subject: [PATCH] Fix: Reject non-positive length in wolfSSL_DES_cbc_cksum --- src/ssl_crypto.c | 3 ++- tests/api/test_ossl_cipher.c | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/ssl_crypto.c b/src/ssl_crypto.c index 864b621bade..ce85f3b1e71 100644 --- a/src/ssl_crypto.c +++ b/src/ssl_crypto.c @@ -2611,7 +2611,8 @@ WOLFSSL_DES_LONG wolfSSL_DES_cbc_cksum(const unsigned char* in, WOLFSSL_ENTER("wolfSSL_DES_cbc_cksum"); /* Validate parameters. */ - if ((in == NULL) || (out == NULL) || (sc == NULL) || (iv == NULL)) { + if ((in == NULL) || (out == NULL) || (sc == NULL) || (iv == NULL) + || length <= 0) { WOLFSSL_MSG("Bad argument passed in"); err = 1; } diff --git a/tests/api/test_ossl_cipher.c b/tests/api/test_ossl_cipher.c index c618d45c4d7..9cbb79c43ca 100644 --- a/tests/api/test_ossl_cipher.c +++ b/tests/api/test_ossl_cipher.c @@ -147,6 +147,9 @@ int test_wolfSSL_DES(void) ExpectIntEQ((DES_cbc_cksum(msg, NULL, sizeof(msg), &myDes, &iv)), 0); ExpectIntEQ((DES_cbc_cksum(msg, &key, sizeof(msg), NULL, &iv)), 0); ExpectIntEQ((DES_cbc_cksum(msg, &key, sizeof(msg), &myDes, NULL)), 0); + ExpectIntEQ((DES_cbc_cksum(msg, &key, 0, &myDes, &iv)), 0); + ExpectIntEQ((DES_cbc_cksum(msg, &key, -1, &myDes, &iv)), 0); + /* DES_cbc_cksum should return the last 4 of the last 8 bytes after * DES_cbc_encrypt on the input */ XMEMSET(iv, 0, sizeof(DES_cblock));