ifplugd: more robust interface name match check

function                                             old     new   delta
check_existence_through_netlink                      278     308     +30

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2010-04-02 07:04:44 +02:00
parent b38af7bd31
commit 37201213ca

View 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);
}
}