From 2f1db3ab27bbfbde8915209aecf0e01fc9d00dbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Jaramago=20Fern=C3=A1ndez?= Date: Tue, 1 Sep 2020 13:16:29 +0200 Subject: [PATCH] Prevent accessing 'pa' object in 'admin_session_handler' after 'PROXYSQL STOP' command --- lib/ProxySQL_Admin.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/ProxySQL_Admin.cpp b/lib/ProxySQL_Admin.cpp index 99f764dc5..84a614a92 100644 --- a/lib/ProxySQL_Admin.cpp +++ b/lib/ProxySQL_Admin.cpp @@ -4608,9 +4608,15 @@ __run_query: } delete resultset; } + if (run_query == true) { + pthread_mutex_unlock(&pa->sql_query_global_mutex); + } else { + // The admin module may have already been freed in case of "PROXYSQL STOP" + if (strcasecmp("PROXYSQL STOP",query_no_space)) + pthread_mutex_unlock(&pa->sql_query_global_mutex); + } l_free(pkt->size-sizeof(mysql_hdr),query_no_space); // it is always freed here l_free(query_length,query); - pthread_mutex_unlock(&pa->sql_query_global_mutex); } void ProxySQL_Admin::vacuum_stats(bool is_admin) {