ifplugd: more robust interface name match check
authorDenys Vlasenko <vda.linux@googlemail.com>
Fri, 2 Apr 2010 05:04:44 +0000 (07:04 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Fri, 2 Apr 2010 05:04:44 +0000 (07:04 +0200)
function                                             old     new   delta
check_existence_through_netlink                      278     308     +30

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
networking/ifplugd.c

index f398cca..41b04c4 100644 (file)
@@ -485,8 +485,10 @@ static smallint detect_link(void)
 
 static NOINLINE int check_existence_through_netlink(void)
 {
+       int iface_len;
        char replybuf[1024];
 
+       iface_len = strlen(G.iface);
        while (1) {
                struct nlmsghdr *mhdr;
                ssize_t bytes;
@@ -526,8 +528,9 @@ static NOINLINE int check_existence_through_netlink(void)
                                                int len = RTA_PAYLOAD(attr);
                                                if (len > IFNAMSIZ)
                                                        len = IFNAMSIZ;
-
-                                               if (strncmp(G.iface, RTA_DATA(attr), len) == 0) {
+                                               if (iface_len <= len
+                                                && strncmp(G.iface, RTA_DATA(attr), len) == 0
+                                               ) {
                                                        G.iface_exists = (mhdr->nlmsg_type == RTM_NEWLINK);
                                                }
                                        }