<div dir="ltr"><div><font face="arial,helvetica,sans-serif">Hey,</font></div><div><font face="arial,helvetica,sans-serif">I am working with dnsmasq 2.61 and came across</font><font face="arial,helvetica,sans-serif"> a potential issue: </font></div>
<div><font face="arial,helvetica,sans-serif"></font> </div><div><font face="arial,helvetica,sans-serif">Connecting with a 3rd client when dhcp-lease-max is set to 2 (for example), causes dnsmasq to exit with segfault.</font></div>
<div><font face="arial,helvetica,sans-serif">Looking at the code, it seems that the lease_allocate might return a NULL pointer which then can be referenced in lease4_allocate.</font></div><div><font face="arial,helvetica,sans-serif">This code looks the same in v2.65</font></div>
<div><font face="arial,helvetica,sans-serif"> </font></div><div><font face="arial,helvetica,sans-serif">struct dhcp_lease *lease_allocate(void)<br>{<br> struct dhcp_lease *lease;<br> if (!leases_left || !(lease = whine_malloc(sizeof(struct dhcp_lease))))<br>
return NULL;</font></div><div><font face="arial,helvetica,sans-serif">.</font></div><div><font face="arial,helvetica,sans-serif">.</font></div><div><font face="arial,helvetica,sans-serif">.</font></div><div><br><font face="arial,helvetica,sans-serif">struct dhcp_lease *lease4_allocate(struct in_addr addr)<br>
{<br> struct dhcp_lease *lease = lease_allocate();<br> lease->addr = addr;<br>.</font></div><div><font face="arial,helvetica,sans-serif">.</font></div><div><font face="arial,helvetica,sans-serif">.</font></div><div><font face="arial,helvetica,sans-serif"></font> </div>
<div>Thanks,</div><div><p>Tsachi</p></div><div><font face="arial,helvetica,sans-serif"> </font></div><div> </div><div><font face="arial,helvetica,sans-serif"> </font></div></div>