From cc22f50fe66b94474eb93e7a02c8d3619dadf9f0 Mon Sep 17 00:00:00 2001 From: Alex Young Date: Thu, 21 Jun 2012 14:15:58 +0100 Subject: [PATCH] Avoid a use-after-free in serve.c --- src/serve.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/serve.c b/src/serve.c index d30d8ae..6e7fcbb 100644 --- a/src/serve.c +++ b/src/serve.c @@ -91,12 +91,17 @@ struct server * server_create ( void server_destroy( struct server * serve ) { self_pipe_destroy( serve->acl_updated_signal ); + serve->acl_updated_signal = NULL; self_pipe_destroy( serve->close_signal ); + serve->close_signal = NULL; pthread_mutex_destroy( &serve->l_acl ); pthread_mutex_destroy( &serve->l_io ); - if ( serve->acl ) { acl_destroy( serve->acl ); } + if ( serve->acl ) { + acl_destroy( serve->acl ); + serve->acl = NULL; + } free( serve ); } @@ -583,9 +588,6 @@ void serve_cleanup(struct server* params, if (params->control_fd){ close(params->control_fd); } if (params->control_socket_name){ ; } - if (params->close_signal) { - self_pipe_destroy( params->close_signal ); - } if (params->allocation_map) { free(params->allocation_map); }