[lvm-devel] master - lvmetad: fix socket leak in handle_connect

Zdenek Kabelac zkabelac at fedoraproject.org
Sat Dec 15 16:25:42 UTC 2012


Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=4008f4f891c948c1629ed0ee50e04d4c26001d0c
Commit:        4008f4f891c948c1629ed0ee50e04d4c26001d0c
Parent:        e012d0635d34edd98652c9425abb618a9565077a
Author:        Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate:    Fri Dec 14 21:31:22 2012 +0100
Committer:     Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Sat Dec 15 17:23:27 2012 +0100

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 deletions(-)

diff --git a/WHATS_NEW b/WHATS_NEW
index 2fc8acf..701d502 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 3711419..3c84e11 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;




More information about the lvm-devel mailing list