Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:15.5:Update
pacemaker.32860
bsc#1219323-0001-Fix-libcrmcommon-avoid-file-de...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File bsc#1219323-0001-Fix-libcrmcommon-avoid-file-descriptor-leak-in-IPC-c.patch of Package pacemaker.32860
From 47d6055bf418f7049fc716745be95374f465eb77 Mon Sep 17 00:00:00 2001 From: "Gao,Yan" <ygao@suse.com> Date: Wed, 7 Feb 2024 11:21:23 +0100 Subject: [PATCH] Fix: libcrmcommon: avoid file descriptor leak in IPC client with async connection Previously if qb_ipcc_connect_async() succeeded but the following poll() failed, the file descriptor would leak. In that case, given that disconnect function is not registered yet, qb_ipcc_disconnect() won't clean up the socket. In any case, call qb_ipcc_connect_continue() here so that it may fail and do the cleanup for us. Issue introduced in 2.1.3 by 4b60aa100. --- lib/common/ipc_client.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/common/ipc_client.c b/lib/common/ipc_client.c index 4635d38d8..df6697cee 100644 --- a/lib/common/ipc_client.c +++ b/lib/common/ipc_client.c @@ -1623,13 +1623,17 @@ pcmk__ipc_is_authentic_process_active(const char *name, uid_t refuid, do { poll_rc = poll(&pollfd, 1, 2000); } while ((poll_rc == -1) && (errno == EINTR)); - if ((poll_rc <= 0) || (qb_ipcc_connect_continue(c) != 0)) { + + /* If poll() failed, given that disconnect function is not registered yet, + * qb_ipcc_disconnect() won't clean up the socket. In any case, call + * qb_ipcc_connect_continue() here so that it may fail and do the cleanup + * for us. + */ + if (qb_ipcc_connect_continue(c) != 0) { crm_info("Could not connect to %s IPC: %s", name, (poll_rc == 0)?"timeout":strerror(errno)); rc = pcmk_rc_ipc_unresponsive; - if (poll_rc > 0) { - c = NULL; // qb_ipcc_connect_continue cleaned up for us - } + c = NULL; // qb_ipcc_connect_continue cleaned up for us goto bail; } #endif -- 2.35.3
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor