wolfssl: fix handling of abrupt connection close

A closed connection without TLS notify shutdowns, has been reported as a
correct EOF instead of an error. Fix the error handling in wolfSSL
backend receive handling.

Spotted by Codex Security

Closes #21002
This commit is contained in:
Stefan Eissing 2026-03-19 10:33:08 +01:00 committed by Daniel Stenberg
parent 1eb9096897
commit 708b3f8b4e
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2

View File

@ -2017,13 +2017,13 @@ static CURLcode wssl_recv(struct Curl_cfilter *cf,
case WOLFSSL_ERROR_NONE:
case WOLFSSL_ERROR_WANT_READ:
case WOLFSSL_ERROR_WANT_WRITE:
if(!wssl->io_result && connssl->peer_closed) {
CURL_TRC_CF(data, cf, "wssl_recv(len=%zu) -> CLOSED", blen);
return CURLE_OK;
if(!wssl->io_result && !connssl->peer_closed) {
/* there is data pending, re-invoke wolfSSL_read() */
CURL_TRC_CF(data, cf, "wssl_recv(len=%zu) -> AGAIN", blen);
return CURLE_AGAIN;
}
/* there is data pending, re-invoke wolfSSL_read() */
CURL_TRC_CF(data, cf, "wssl_recv(len=%zu) -> AGAIN", blen);
return CURLE_AGAIN;
/* fall through to default error handling below */
FALLTHROUGH();
default:
if(wssl->io_result == CURLE_AGAIN) {
CURL_TRC_CF(data, cf, "wssl_recv(len=%zu) -> AGAIN", blen);