Re: [Dnsmasq-discuss] dnsmasq does crash

2016-08-30 Thread Simon Kelley
-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

2016-08-30 Thread 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

--- 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, ) != -1 )
-	iface_addr = ((struct sockaddr_in *) _addr)->sin_addr;
-  else
 	{
-	  my_syslog(MS_DHCP | LOG_WARNING, _("DHCP packet received on %s which has no address"), ifr.ifr_name);
-	  return;
+	  addrp = _addr;
+	  iface_addr = ((struct sockaddr_in *) _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 *)_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, );
 	}
   
+  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, , complete_context))
 	return;
 
___
Dnsmasq-discuss mailing list
Dnsmasq-discuss@lists.thekelleys.org.uk
http://lists.thekelleys.org.uk/mailman/listinfo/dnsmasq-discuss