From 4008f4f891c948c1629ed0ee50e04d4c26001d0c Mon Sep 17 00:00:00 2001 From: Zdenek Kabelac Date: Fri, 14 Dec 2012 21:31:22 +0100 Subject: [PATCH] lvmetad: fix socket leak in handle_connect Close socket_fd and report error on malloc failure. --- WHATS_NEW | 1 + libdaemon/server/daemon-server.c | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/WHATS_NEW b/WHATS_NEW index 2fc8acf0e..701d502ac 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,6 @@ Version 2.02.99 - =================================== + Fix socket leak on error path in lvmetad's handle_connect. Check for failing id_read_format() in _pv_populate_lvmcache. Fix memleak on error path for lvmetad's pv_found. Unlock vg mutex in error path when lvmetad tries to lock_vg. diff --git a/libdaemon/server/daemon-server.c b/libdaemon/server/daemon-server.c index 3711419c6..3c84e1170 100644 --- a/libdaemon/server/daemon-server.c +++ b/libdaemon/server/daemon-server.c @@ -427,8 +427,12 @@ static int handle_connect(daemon_state s) if (client.socket_fd < 0) return 0; - if (!(baton = malloc(sizeof(struct thread_baton)))) + if (!(baton = malloc(sizeof(struct thread_baton)))) { + if (close(client.socket_fd)) + perror("close"); + ERROR(&s, "Failed to allocate thread baton"); return 0; + } baton->s = s; baton->client = client;