Avoid potential double close of client_skt in sslecho

The server_running variable is declared as volatile and some comments in
the code are mentioning about implementing CTRL+C handler in the future.

In the client handling loop, the client_skt is closed at the end of the
loop if server_running is true. If (future) CTRL+C handler changes
server_running to false at this time. The next accept will not happen
and the exit clean up code will close client_skt for the second time.

This patch fixes this potential double close by setting client_skt back
to -1 after closing it.

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/27405)

(cherry picked from commit 48e3fe0863)
This commit is contained in:
Levi Zim 2025-04-16 14:21:33 +08:00 committed by Matt Caswell
parent 14dd63e37a
commit c8358f08ba
1 changed files with 5 additions and 0 deletions

View File

@ -251,6 +251,11 @@ int main(int argc, char **argv)
SSL_shutdown(ssl);
SSL_free(ssl);
close(client_skt);
/*
* Set client_skt to -1 to avoid double close when
* server_running become false before next accept
*/
client_skt = -1;
}
}
printf("Server exiting...\n");