]> 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:45:26 +0000 (15:45 +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)

(cherry picked from commit 48e3fe08639d84bd557c0d5248f5600f2fb1f7de)

demos/sslecho/main.c

index 1c7f18804138919eb970359eb4883d5bb62ab8f2..921f0b4df89a8a226a334bc4714e38d15937226f 100644 (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");