Date: Thu, 22 Jun 2000 09:52:35 +0400 From: "Oles' Hnatkevych" <gnut@fc.kiev.ua> To: freebsd-bugs@freebsd.org Cc: brian@Awfulhak.org Subject: bug in PPP code Message-ID: <13411.000622@fc.kiev.ua>
next in thread | raw e-mail | index | archive | help
Hello! PPP code does not properly handle the information about interfaces, resulting in routing lost to some peers and complaining about inability to delete address from interface (though it does not belong to that interface). Some of you may have seen me in freebsd-questions complaining about "Warning" that issued PPP telling that can not removed address from interface. Finally the bug in PPP source code was found. The bug is difficult to spot because not many of you use more than 10 tunnel devices simultaneously. The bug is in iface.c: look at the lines below and check out the quoted line while (ptr < end && iface == NULL) { ifm = (struct if_msghdr *)ptr; /* On if_msghdr */ if (ifm->ifm_type != RTM_IFINFO) break; dl = (struct sockaddr_dl *)(ifm + 1); /* Single _dl at end */ >> if (!strncmp(name, dl->sdl_data, dl->sdl_nlen)) { iface = (struct iface *)malloc(sizeof *iface); if (iface == NULL) { fprintf(stderr, "iface_Create: malloc: %s\n", strerror(errno)); return NULL; } Suppose the tun30 has been chosen and in the loop we've received the information about tun3. The strncmp function WILL return 0, because tun3 = tun30, comparing just first 4 characters, which is the length of "tun3" (dl->sdl_nlen). The result of this that internal PPP structure that contains information about interface at the beginning has wrong data about it's current addresses (in example tun3 address). And again, the route to this address is removed from routing table, but kernel can not delete this address from interface cause it does not belong to it. We've removed the letter 'n' from the function name and it's last argument and are now happy ;) I believe that strncmp may cause some other errors, since it is used serveral times in the PPP source code, and I'm not bothering to find out if it is used properly. With best wishes, Oles' Hnatkevych, http://gnut.kiev.ua, gnut@fc.kiev.ua Finance & Credit Banking Corporation, Kyiv, Ukraine. Industrialnaya str. 27 +380 44 2417190 Artema str. 60, +380 44 4906877 To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?13411.000622>