telnet, use stack scratch buffer for do

- instead of data->state.buffer

Closes #12793
This commit is contained in:
Stefan Eissing 2024-01-25 15:43:14 +01:00 committed by Daniel Stenberg
parent a069c6aeb2
commit 0c05b8f813
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2

View File

@ -1320,7 +1320,7 @@ static CURLcode telnet_do(struct Curl_easy *data, bool *done)
ssize_t nread; ssize_t nread;
struct curltime now; struct curltime now;
bool keepon = TRUE; bool keepon = TRUE;
char *buf = data->state.buffer; char buffer[4*1024];
struct TELNET *tn; struct TELNET *tn;
*done = TRUE; /* unconditionally */ *done = TRUE; /* unconditionally */
@ -1377,7 +1377,7 @@ static CURLcode telnet_do(struct Curl_easy *data, bool *done)
/* Keep on listening and act on events */ /* Keep on listening and act on events */
while(keepon) { while(keepon) {
const DWORD buf_size = (DWORD)data->set.buffer_size; const DWORD buf_size = (DWORD)sizeof(buffer);
DWORD waitret = WaitForMultipleObjects(obj_count, objs, DWORD waitret = WaitForMultipleObjects(obj_count, objs,
FALSE, wait_timeout); FALSE, wait_timeout);
switch(waitret) { switch(waitret) {
@ -1388,7 +1388,7 @@ static CURLcode telnet_do(struct Curl_easy *data, bool *done)
if(data->set.is_fread_set) { if(data->set.is_fread_set) {
size_t n; size_t n;
/* read from user-supplied method */ /* read from user-supplied method */
n = data->state.fread_func(buf, 1, buf_size, data->state.in); n = data->state.fread_func(buffer, 1, buf_size, data->state.in);
if(n == CURL_READFUNC_ABORT) { if(n == CURL_READFUNC_ABORT) {
keepon = FALSE; keepon = FALSE;
result = CURLE_READ_ERROR; result = CURLE_READ_ERROR;
@ -1416,7 +1416,7 @@ static CURLcode telnet_do(struct Curl_easy *data, bool *done)
if(!readfile_read) if(!readfile_read)
break; break;
if(!ReadFile(stdin_handle, buf, buf_size, if(!ReadFile(stdin_handle, buffer, buf_size,
&readfile_read, NULL)) { &readfile_read, NULL)) {
keepon = FALSE; keepon = FALSE;
result = CURLE_READ_ERROR; result = CURLE_READ_ERROR;
@ -1424,7 +1424,7 @@ static CURLcode telnet_do(struct Curl_easy *data, bool *done)
} }
} }
result = send_telnet_data(data, buf, readfile_read); result = send_telnet_data(data, buffer, readfile_read);
if(result) { if(result) {
keepon = FALSE; keepon = FALSE;
break; break;
@ -1435,14 +1435,14 @@ static CURLcode telnet_do(struct Curl_easy *data, bool *done)
case WAIT_OBJECT_0 + 1: case WAIT_OBJECT_0 + 1:
{ {
if(!ReadFile(stdin_handle, buf, buf_size, if(!ReadFile(stdin_handle, buffer, buf_size,
&readfile_read, NULL)) { &readfile_read, NULL)) {
keepon = FALSE; keepon = FALSE;
result = CURLE_READ_ERROR; result = CURLE_READ_ERROR;
break; break;
} }
result = send_telnet_data(data, buf, readfile_read); result = send_telnet_data(data, buffer, readfile_read);
if(result) { if(result) {
keepon = FALSE; keepon = FALSE;
break; break;
@ -1464,7 +1464,7 @@ static CURLcode telnet_do(struct Curl_easy *data, bool *done)
} }
if(events.lNetworkEvents & FD_READ) { if(events.lNetworkEvents & FD_READ) {
/* read data from network */ /* read data from network */
result = Curl_read(data, sockfd, buf, data->set.buffer_size, &nread); result = Curl_read(data, sockfd, buffer, sizeof(buffer), &nread);
/* read would've blocked. Loop again */ /* read would've blocked. Loop again */
if(result == CURLE_AGAIN) if(result == CURLE_AGAIN)
break; break;
@ -1480,7 +1480,7 @@ static CURLcode telnet_do(struct Curl_easy *data, bool *done)
break; break;
} }
result = telrcv(data, (unsigned char *) buf, nread); result = telrcv(data, (unsigned char *) buffer, nread);
if(result) { if(result) {
keepon = FALSE; keepon = FALSE;
break; break;
@ -1545,7 +1545,7 @@ static CURLcode telnet_do(struct Curl_easy *data, bool *done)
default: /* read! */ default: /* read! */
if(pfd[0].revents & POLLIN) { if(pfd[0].revents & POLLIN) {
/* read data from network */ /* read data from network */
result = Curl_read(data, sockfd, buf, data->set.buffer_size, &nread); result = Curl_read(data, sockfd, buffer, sizeof(buffer), &nread);
/* read would've blocked. Loop again */ /* read would've blocked. Loop again */
if(result == CURLE_AGAIN) if(result == CURLE_AGAIN)
break; break;
@ -1571,7 +1571,7 @@ static CURLcode telnet_do(struct Curl_easy *data, bool *done)
total_dl += nread; total_dl += nread;
result = Curl_pgrsSetDownloadCounter(data, total_dl); result = Curl_pgrsSetDownloadCounter(data, total_dl);
if(!result) if(!result)
result = telrcv(data, (unsigned char *)buf, nread); result = telrcv(data, (unsigned char *)buffer, nread);
if(result) { if(result) {
keepon = FALSE; keepon = FALSE;
break; break;
@ -1589,12 +1589,12 @@ static CURLcode telnet_do(struct Curl_easy *data, bool *done)
nread = 0; nread = 0;
if(poll_cnt == 2) { if(poll_cnt == 2) {
if(pfd[1].revents & POLLIN) { /* read from in file */ if(pfd[1].revents & POLLIN) { /* read from in file */
nread = read(pfd[1].fd, buf, data->set.buffer_size); nread = read(pfd[1].fd, buffer, sizeof(buffer));
} }
} }
else { else {
/* read from user-supplied method */ /* read from user-supplied method */
nread = (int)data->state.fread_func(buf, 1, data->set.buffer_size, nread = (int)data->state.fread_func(buffer, 1, sizeof(buffer),
data->state.in); data->state.in);
if(nread == CURL_READFUNC_ABORT) { if(nread == CURL_READFUNC_ABORT) {
keepon = FALSE; keepon = FALSE;
@ -1605,7 +1605,7 @@ static CURLcode telnet_do(struct Curl_easy *data, bool *done)
} }
if(nread > 0) { if(nread > 0) {
result = send_telnet_data(data, buf, nread); result = send_telnet_data(data, buffer, nread);
if(result) { if(result) {
keepon = FALSE; keepon = FALSE;
break; break;