From c436bd37ec770313c8738a0b33dd6283b20d5093 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Sat, 18 Apr 2026 09:12:11 +1000 Subject: [PATCH] eis: fix two file descriptor leaks on error Assisted-by: Claude:claude-opus-4-6 Part-of: --- src/libeis-fd.c | 6 +++++- src/libeis-socket.c | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/libeis-fd.c b/src/libeis-fd.c index 6ed151e..dcccf0b 100644 --- a/src/libeis-fd.c +++ b/src/libeis-fd.c @@ -28,6 +28,7 @@ #include #include +#include "util-io.h" #include "util-macros.h" #include "util-mem.h" #include "util-sources.h" @@ -83,8 +84,11 @@ eis_backend_fd_add_client(struct eis *eis) return -errno; struct eis_client *client = eis_client_new(eis, fds[0]); - if (client == NULL) + if (client == NULL) { + xclose(fds[0]); + xclose(fds[1]); return -ENOMEM; + } eis_client_unref(client); diff --git a/src/libeis-socket.c b/src/libeis-socket.c index 671b3d5..25199fb 100644 --- a/src/libeis-socket.c +++ b/src/libeis-socket.c @@ -115,6 +115,10 @@ listener_dispatch(struct source *source, void *data) return; struct eis_client *client = eis_client_new(eis, fd); + if (client == NULL) { + xclose(fd); + return; + } eis_client_unref(client); }