From: Stefan Metzmacher Date: Wed, 11 Jan 2023 22:48:11 +0000 (+0100) Subject: s3:rpc_server/mdssvc: don't crash mdssvc_tracker_shutdown with NULL glue X-Git-Tag: tevent-0.14.1~70 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=91f1567cdcaed3a8f8faf4e77616553308a5f8eb;p=thirdparty%2Fsamba.git s3:rpc_server/mdssvc: don't crash mdssvc_tracker_shutdown with NULL glue If mdssvc_tracker_shutdown() is called without any mds_tracker_connect() we would crash as mdssvc_tracker_init() don't call mdssvc_tracker_prepare(). Signed-off-by: Stefan Metzmacher Reviewed-by: Jeremy Allison Autobuild-User(master): Jeremy Allison Autobuild-Date(master): Thu Jan 19 19:46:01 UTC 2023 on atb-devel-224 --- diff --git a/source3/rpc_server/mdssvc/mdssvc_tracker.c b/source3/rpc_server/mdssvc/mdssvc_tracker.c index fab8bd22324..7ad6989fd25 100644 --- a/source3/rpc_server/mdssvc/mdssvc_tracker.c +++ b/source3/rpc_server/mdssvc/mdssvc_tracker.c @@ -286,7 +286,6 @@ static bool mdssvc_tracker_prepare(void) mdssvc_tracker_ctx->gmain_ctx = g_main_context_new(); if (mdssvc_tracker_ctx->gmain_ctx == NULL) { DBG_ERR("error from g_main_context_new\n"); - TALLOC_FREE(mdssvc_tracker_ctx); return false; } @@ -297,7 +296,7 @@ static bool mdssvc_tracker_prepare(void) if (mdssvc_tracker_ctx->glue == NULL) { DBG_ERR("samba_tevent_glib_glue_create failed\n"); g_object_unref(mdssvc_tracker_ctx->gmain_ctx); - TALLOC_FREE(mdssvc_tracker_ctx); + mdssvc_tracker_ctx->gmain_ctx = NULL; return false; } @@ -306,10 +305,19 @@ static bool mdssvc_tracker_prepare(void) static bool mdssvc_tracker_shutdown(struct mdssvc_ctx *mdssvc_ctx) { + if (mdssvc_tracker_ctx == NULL) { + return true; + } + + if (mdssvc_tracker_ctx->gmain_ctx == NULL) { + return true; + } + samba_tevent_glib_glue_quit(mdssvc_tracker_ctx->glue); TALLOC_FREE(mdssvc_tracker_ctx->glue); g_object_unref(mdssvc_tracker_ctx->gmain_ctx); + mdssvc_tracker_ctx->gmain_ctx = NULL; return true; }