From ee310d71b514b0722f0ec136e3747224ac0596cf Mon Sep 17 00:00:00 2001 From: Benjamin Marzinski Date: Mon, 3 Aug 2009 16:59:05 -0500 Subject: [PATCH] multipath-tools: Fix uevent handling code Multipathd wasn't setting buflen when it read in a uevent message. This was causing buflen to be used unitialized, and would often keep multipathd from processing uevents. This patch correctly initializes buflen to the size of the buffer received. Signed-off-by: Benjamin Marzinski --- libmultipath/uevent.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/libmultipath/uevent.c b/libmultipath/uevent.c index 0ed7e12..50ed9c9 100644 --- a/libmultipath/uevent.c +++ b/libmultipath/uevent.c @@ -231,7 +231,8 @@ int uevent_listen(int (*uev_trigger)(struct uevent *, void * trigger_data), smsg.msg_control = cred_msg; smsg.msg_controllen = sizeof(cred_msg); - if (recvmsg(sock, &smsg, 0) < 0) { + buflen = recvmsg(sock, &smsg, 0); + if (buflen < 0) { if (errno != EINTR) condlog(0, "error receiving message"); continue; @@ -286,8 +287,10 @@ int uevent_listen(int (*uev_trigger)(struct uevent *, void * trigger_data), /* action string */ uev->action = buffer; pos = strchr(buffer, '@'); - if (!pos) + if (!pos) { + condlog(3, "bad action string '%s'", buffer); continue; + } pos[0] = '\0'; /* sysfs path */ -- 2.7.4