On 1/22/2024 3:46 PM, Dmitry Karpov via curl-library wrote:
I can confirm that the checks for null data below prevent the crashes
that I observed when client drives SSL sockets and steps on read/write
errors.
Should I create a PR with these changes?
---
lib/cf-socket.c | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/lib/cf-socket.c b/lib/cf-socket.c
index e42b4a87b..98bca9f17 100644
--- a/lib/cf-socket.c
+++ b/lib/cf-socket.c
@@ -863,9 +863,11 @@ static ssize_t nw_in_read(void *reader_ctx,
else {
char buffer[STRERROR_LEN];
- failf(rctx->data, "Recv failure: %s",
- Curl_strerror(sockerr, buffer, sizeof(buffer)));
- rctx->data->state.os_errno = sockerr;
+ if(rctx->data) {
+ failf(rctx->data, "Recv failure: %s",
+ Curl_strerror(sockerr, buffer, sizeof(buffer)));
+ rctx->data->state.os_errno = sockerr;
+ }
*err = CURLE_RECV_ERROR;
nread = -1;
}
@@ -1329,9 +1331,11 @@ static ssize_t cf_socket_send(struct Curl_cfilter
*cf, struct Curl_easy *data,
}
else {
char buffer[STRERROR_LEN];
- failf(data, "Send failure: %s",
- Curl_strerror(sockerr, buffer, sizeof(buffer)));
- data->state.os_errno = sockerr;
+ if(data) {
+ failf(data, "Send failure: %s",
+ Curl_strerror(sockerr, buffer, sizeof(buffer)));
+ data->state.os_errno = sockerr;
+ }
*err = CURLE_SEND_ERROR;
}
}
--
Yes, please open a PR for further discussion. data is supposed to be !=
NULL even in those cases from what I remember, so there might be a
bigger problem. OTOH I'm not entirely up on the changes Stefan has made
so maybe this is ok. cc @icing in the PR
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-library
Etiquette: https://curl.se/mail/etiquette.html