Replace getline with fgets in sslecho demo

Windows doesn't support getline, so we need to use fgets here

Reviewed-by: Nicola Tuveri <nic.tuv@gmail.com>
Reviewed-by: Tim Hudson <tjh@openssl.org>
Reviewed-by: Paul Dale <ppzgs1@gmail.com>
Reviewed-by: Tom Cosgrove <tom.cosgrove@arm.com>
(Merged from https://github.com/openssl/openssl/pull/24047)
This commit is contained in:
Neil Horman 2024-04-07 08:42:51 -04:00
parent 4ad6e549fa
commit 793a4056ad
1 changed files with 9 additions and 10 deletions

View File

@ -133,6 +133,7 @@ static void usage(void)
exit(EXIT_FAILURE);
}
#define BUFFERSIZE 1024
int main(int argc, char **argv)
{
bool isServer;
@ -144,10 +145,9 @@ int main(int argc, char **argv)
int server_skt = -1;
int client_skt = -1;
/* used by getline relying on realloc, can't be statically allocated */
char *txbuf = NULL;
size_t txcap = 0;
int txlen;
/* used by fgets */
char buffer[BUFFERSIZE];
char *txbuf;
char rxbuf[128];
size_t rxcap = sizeof(rxbuf);
@ -309,9 +309,11 @@ int main(int argc, char **argv)
/* Loop to send input from keyboard */
while (true) {
/* Get a line of input */
txlen = getline(&txbuf, &txcap, stdin);
memset(buffer, 0, BUFFERSIZE);
txbuf = fgets(buffer, BUFFERSIZE, stdin);
/* Exit loop on error */
if (txlen < 0 || txbuf == NULL) {
if (txbuf == NULL) {
break;
}
/* Exit loop if just a carriage return */
@ -319,7 +321,7 @@ int main(int argc, char **argv)
break;
}
/* Send it to the server */
if ((result = SSL_write(ssl, txbuf, txlen)) <= 0) {
if ((result = SSL_write(ssl, txbuf, strlen(txbuf))) <= 0) {
printf("Server closed connection\n");
ERR_print_errors_fp(stderr);
break;
@ -358,9 +360,6 @@ exit:
if (server_skt != -1)
close(server_skt);
if (txbuf != NULL && txcap > 0)
free(txbuf);
printf("sslecho exiting\n");
return EXIT_SUCCESS;