Re: [Dnsmasq-discuss] dnsmasq does crash
-BEGIN PGP SIGNED MESSAGE- Hash: SHA256 Sorry about this. Putative fix pushed to git. Cheers, Simon. On 30/08/16 19:47, e9hack wrote: > Hi, > > I did check it again. I did try to checkout > e94ad0fa01ccc8d0c39e069ab29b008f9c811600 'Suppress useless warning > about DHCP packets of interfaces without addresses'. But for some > reason, I got all later changes too. Now I did patch the files > manually. The crash is introduced by > 2675f2061525bc954be14988d64384b74aa7bf8b 'Handle binding upstream > servers to an interface (--server=1.2.3.4@eth0) when the named > interface is destroyed and recreated in the kernel'. > > Regards, Hartmut > > Am 30.08.2016 um 12:19 schrieb Kevin Darbyshire-Bryant: >> >> >> On 29/08/16 20:30, e9hack wrote: >>> Hi, >>> >>> I've trouble with this commit, independently that it looks >>> simple: >>> >>> Suppress useless warning about DHCP packets of interfaces >>> without addresses. >>> >>> Starting with this commit, dnsmasq does crash shortly after >>> start: >>> >>> Mon Aug 29 21:18:40 2016 kern.info kernel: [17587.489903] Mon >>> Aug 29 21:18:40 2016 kern.info kernel: [17587.489903] >>> do_page_fault(): sending SIGSEGV to dnsmasq for invalid write >>> access to 0038 Mon Aug 29 21:18:40 2016 kern.info kernel: >>> [17587.498607] epc = 00411eff in dnsmasq[40+2d000] Mon Aug >>> 29 21:18:40 2016 kern.info kernel: [17587.503589] ra = >>> 00411ec7 in dnsmasq[40+2d000] Mon Aug 29 21:18:40 2016 >>> kern.info kernel: [17587.508587] >>> >>> Regards, Hartmut >> Get an identical error, didn't get as far as narrowing it to a >> specific commit. Openwrt/LEDE has 'long' carried a (more >> complicated) patch to suppress the message, attached for >> reference. >> >> Kevin >> >> >> >> ___ Dnsmasq-discuss >> mailing list Dnsmasq-discuss@lists.thekelleys.org.uk >> http://lists.thekelleys.org.uk/mailman/listinfo/dnsmasq-discuss >> > > > ___ Dnsmasq-discuss > mailing list Dnsmasq-discuss@lists.thekelleys.org.uk > http://lists.thekelleys.org.uk/mailman/listinfo/dnsmasq-discuss > -BEGIN PGP SIGNATURE- Version: GnuPG v2.0.22 (GNU/Linux) iQIcBAEBCAAGBQJXxgPfAAoJEBXN2mrhkTWivPkP/jqWy7CrEUSNLeTtrf/LWDOU HSW8uMaf7U0c53/Ipsys1c9ABw2jZpkDnaR/EDqFoMAeWYJTX5HWT7n1PCm3nqhg D36yL5QPIM4C4RaVdm63BZVy6L6xD2bCxXwMMmxlCdwS8pcS1zEP9enyCvK7g8BK Pr9iCEsx6b05HhtsXSmy03z0o5M3RYShspU5TZ6XkfN3wYn1RaJcQZLV4HXE9ZG7 EioxOqClyEjpzxD5ArH/U7KgJr/FVMti8pIzxli7QIz+bgaDzodqIF8Ukk6kCqFo soEdqj0Uch24TRZMjyjxCJYU3nY5PqqCl0VdOQJXoAVTB4tgSaRSoNFjmogwoRQF YQwe+beUIhqh3YiEDnXLJQNNRH96bX1g73vDVNghZZ9WhXDALsGMcVdadCJSFcis snkJXM9dim8xv7+NwKcTB/0lomDxgH4cqGoRFz/Zx/SXPCddLA+GLIfs4A5M62Z0 W5XIPO/FLjoevwS5aHofL61G2AN6pKe5UehMcvxhTUP2ue06nLjmzy5JtZ4vO3q8 C0Q/E1XuEKC97LaiokNUnr4aRM6LUA8hnDvMgoJ2Se88Q1F2gQN70QHZhyzp2+lF j5G46p7M0MmeQnuLNJHDOvGCr6Tp2ul2Kt//R+OwNU4AmK8RlZIk4YaIhJXJq2Z6 tt2wjpPde3PR1Tn7Spru =UJhM -END PGP SIGNATURE- ___ Dnsmasq-discuss mailing list Dnsmasq-discuss@lists.thekelleys.org.uk http://lists.thekelleys.org.uk/mailman/listinfo/dnsmasq-discuss
Re: [Dnsmasq-discuss] dnsmasq does crash
Hi, I did check it again. I did try to checkout e94ad0fa01ccc8d0c39e069ab29b008f9c811600 'Suppress useless warning about DHCP packets of interfaces without addresses'. But for some reason, I got all later changes too. Now I did patch the files manually. The crash is introduced by 2675f2061525bc954be14988d64384b74aa7bf8b 'Handle binding upstream servers to an interface (--server=1.2.3.4@eth0) when the named interface is destroyed and recreated in the kernel'. Regards, Hartmut Am 30.08.2016 um 12:19 schrieb Kevin Darbyshire-Bryant: > > > On 29/08/16 20:30, e9hack wrote: >> Hi, >> >> I've trouble with this commit, independently that it looks simple: >> >> Suppress useless warning about DHCP packets of interfaces without addresses. >> >> Starting with this commit, dnsmasq does crash shortly after start: >> >> Mon Aug 29 21:18:40 2016 kern.info kernel: [17587.489903] >> Mon Aug 29 21:18:40 2016 kern.info kernel: [17587.489903] do_page_fault(): >> sending SIGSEGV >> to dnsmasq for invalid write access to 0038 >> Mon Aug 29 21:18:40 2016 kern.info kernel: [17587.498607] epc = 00411eff in >> dnsmasq[40+2d000] >> Mon Aug 29 21:18:40 2016 kern.info kernel: [17587.503589] ra = 00411ec7 in >> dnsmasq[40+2d000] >> Mon Aug 29 21:18:40 2016 kern.info kernel: [17587.508587] >> >> Regards, >> Hartmut > Get an identical error, didn't get as far as narrowing it to a specific > commit. > Openwrt/LEDE has 'long' carried a (more complicated) patch to suppress the > message, > attached for reference. > > Kevin > > > > ___ > Dnsmasq-discuss mailing list > Dnsmasq-discuss@lists.thekelleys.org.uk > http://lists.thekelleys.org.uk/mailman/listinfo/dnsmasq-discuss > ___ Dnsmasq-discuss mailing list Dnsmasq-discuss@lists.thekelleys.org.uk http://lists.thekelleys.org.uk/mailman/listinfo/dnsmasq-discuss
Re: [Dnsmasq-discuss] dnsmasq does crash
On 29/08/16 20:30, e9hack wrote: Hi, I've trouble with this commit, independently that it looks simple: Suppress useless warning about DHCP packets of interfaces without addresses. Starting with this commit, dnsmasq does crash shortly after start: Mon Aug 29 21:18:40 2016 kern.info kernel: [17587.489903] Mon Aug 29 21:18:40 2016 kern.info kernel: [17587.489903] do_page_fault(): sending SIGSEGV to dnsmasq for invalid write access to 0038 Mon Aug 29 21:18:40 2016 kern.info kernel: [17587.498607] epc = 00411eff in dnsmasq[40+2d000] Mon Aug 29 21:18:40 2016 kern.info kernel: [17587.503589] ra = 00411ec7 in dnsmasq[40+2d000] Mon Aug 29 21:18:40 2016 kern.info kernel: [17587.508587] Regards, Hartmut Get an identical error, didn't get as far as narrowing it to a specific commit. Openwrt/LEDE has 'long' carried a (more complicated) patch to suppress the message, attached for reference. Kevin --- a/src/dhcp.c +++ b/src/dhcp.c @@ -147,7 +147,7 @@ void dhcp_packet(time_t now, int pxe_fd) ssize_t sz; int iface_index = 0, unicast_dest = 0, is_inform = 0; int rcvd_iface_index; - struct in_addr iface_addr; + struct in_addr iface_addr, *addrp = NULL; struct iface_param parm; #ifdef HAVE_LINUX_NETWORK struct arpreq arp_req; @@ -277,11 +277,9 @@ void dhcp_packet(time_t now, int pxe_fd) { ifr.ifr_addr.sa_family = AF_INET; if (ioctl(daemon->dhcpfd, SIOCGIFADDR, &ifr) != -1 ) - iface_addr = ((struct sockaddr_in *) &ifr.ifr_addr)->sin_addr; - else { - my_syslog(MS_DHCP | LOG_WARNING, _("DHCP packet received on %s which has no address"), ifr.ifr_name); - return; + addrp = &iface_addr; + iface_addr = ((struct sockaddr_in *) &ifr.ifr_addr)->sin_addr; } for (tmp = daemon->dhcp_except; tmp; tmp = tmp->next) @@ -300,7 +298,7 @@ void dhcp_packet(time_t now, int pxe_fd) parm.relay_local.s_addr = 0; parm.ind = iface_index; - if (!iface_check(AF_INET, (struct all_addr *)&iface_addr, ifr.ifr_name, NULL)) + if (!iface_check(AF_INET, (struct all_addr *)addrp, ifr.ifr_name, NULL)) { /* If we failed to match the primary address of the interface, see if we've got a --listen-address for a secondary */ @@ -320,6 +318,12 @@ void dhcp_packet(time_t now, int pxe_fd) complete_context(match.addr, iface_index, NULL, match.netmask, match.broadcast, &parm); } + if (!addrp) +{ + my_syslog(MS_DHCP | LOG_WARNING, _("DHCP packet received on %s which has no address"), ifr.ifr_name); + return; +} + if (!iface_enumerate(AF_INET, &parm, complete_context)) return; ___ Dnsmasq-discuss mailing list Dnsmasq-discuss@lists.thekelleys.org.uk http://lists.thekelleys.org.uk/mailman/listinfo/dnsmasq-discuss