Entries with long vhost names in /proc/net/igmp have no whitespace
between name and colon, so sscanf() adds it to vhost and
'ip maddr show iface' doesn't include inet result.

Signed-off-by: Petr Vorel <pvo...@suse.cz>
---
 ip/ipmaddr.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/ip/ipmaddr.c b/ip/ipmaddr.c
index 22eb407..4f726fd 100644
--- a/ip/ipmaddr.c
+++ b/ip/ipmaddr.c
@@ -136,13 +136,17 @@ static void read_igmp(struct ma_info **result_p)
 
        while (fgets(buf, sizeof(buf), fp)) {
                struct ma_info *ma;
+               size_t len;
 
                if (buf[0] != '\t') {
                        sscanf(buf, "%d%s", &m.index, m.name);
+                       len = strlen(m.name);
+                       if (m.name[len - 1] == ':')
+                               len--;
                        continue;
                }
 
-               if (filter.dev && strcmp(filter.dev, m.name))
+               if (filter.dev && strncmp(filter.dev, m.name, len))
                        continue;
 
                sscanf(buf, "%08x%d", (__u32 *)&m.addr.data, &m.users);
-- 
2.11.0

Reply via email to