]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
Avoid potential double close of client_skt in sslecho
authorLevi Zim <rsworktech@outlook.com>
Wed, 16 Apr 2025 06:21:33 +0000 (14:21 +0800)
committerMatt Caswell <matt@openssl.org>
Fri, 20 Jun 2025 14:44:29 +0000 (15:44 +0100)
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)

demos/sslecho/main.c

index 6db50b1b08df630007c6224d9db8b2f8680aa62e..faa8b389551587e0b9692088bb52a54e0b67bac3 100644 (file)
@@ -264,6 +264,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");