From 36562b721e1875ef66e73c33b4b6828944cb8f24 Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Wed, 10 Jun 2026 14:17:11 +0100 Subject: [PATCH] sd-varlink: disable event source in varlink_server_socket_free() The cleanup destructor for VarlinkServerSocket only freed ss->address and the struct, leaking ss->event_source. If sd_varlink_server_listen_address() hits OOM at free_and_strdup() after the io-source was already armed, the source stays registered in the event loop with userdata pointing at the freed socket. Disable it before freeing; the call is a no-op when the source was never armed, so the other freep sites are unaffected. Follow-up for c14e841f31682a383edce68a9142a01589a95f50 Co-developed-by: Claude Opus 4.8 --- src/libsystemd/sd-varlink/sd-varlink.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libsystemd/sd-varlink/sd-varlink.c b/src/libsystemd/sd-varlink/sd-varlink.c index 1b0efa3992..f484c9da44 100644 --- a/src/libsystemd/sd-varlink/sd-varlink.c +++ b/src/libsystemd/sd-varlink/sd-varlink.c @@ -3297,6 +3297,7 @@ VarlinkServerSocket* varlink_server_socket_free(VarlinkServerSocket *ss) { if (!ss) return NULL; + sd_event_source_disable_unref(ss->event_source); free(ss->address); return mfree(ss); }