From e3e0b9487831575fe3646811ceccc9a3a5b12ab9 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 2 May 2018 17:24:50 -0400 Subject: [PATCH] Free GSS service name after a failed incoming connection --- tr/tr_trp.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tr/tr_trp.c b/tr/tr_trp.c index f6e60c5..da92be4 100644 --- a/tr/tr_trp.c +++ b/tr/tr_trp.c @@ -187,10 +187,12 @@ static void tr_trps_event_cb(int listener, short event, void *arg) name = talloc_asprintf(tmp_ctx, "trustrouter@%s", trps->hostname); if (name == NULL) goto cleanup; - gssname=tr_new_name(name); /* name cleaned up with tmp_ctx */ + gssname=tr_new_name(name); /* name cleaned up with tmp_ctx but need to handl gssname ourselves */ - conn=trp_connection_accept(tmp_ctx, listener, gssname); - if (conn!=NULL) { + conn=trp_connection_accept(tmp_ctx, listener, gssname); /* steals gssname unless it fails */ + if (conn == NULL) { + tr_free_name(gssname); + } else { /* need to monitor this fd and trigger events when read becomes possible */ thread_data=talloc(conn, struct trps_thread_data); if (thread_data==NULL) { -- 2.1.4