Package: isc-dhcp Version: 4.2.4-3 Severity: normal Tags: patch User: ubuntu-de...@lists.ubuntu.com Usertags: origin-ubuntu raring
Hi, If I set "backoff_cutoff 0;", dhclient will crash with a divide-by-zero instead of handling the case gracefully. The attached patch fixes this problem. Thanks, -Kees -- Kees Cook @debian.org
Description: setting "backoff-cutoff 0;" in dhclient.conf will cause dhclient to divide by zero and crash. It should be handled more gracefully. Author: Kees Cook <k...@ubuntu.com> Index: isc-dhcp-4.2.4/client/dhclient.c =================================================================== --- isc-dhcp-4.2.4.orig/client/dhclient.c 2012-11-28 08:16:06.000000000 -0800 +++ isc-dhcp-4.2.4/client/dhclient.c 2012-11-28 08:34:30.051276136 -0800 @@ -1874,9 +1874,12 @@ client->interval += random() % (2 * client->interval); /* Don't backoff past cutoff. */ - if (client->interval > client->config->backoff_cutoff) - client->interval = (client->config->backoff_cutoff / 2) - + (random() % client->config->backoff_cutoff); + if (client->interval > client->config->backoff_cutoff) { + client->interval = (client->config->backoff_cutoff / 2); + if (client->config->backoff_cutoff) + client->interval += (random() % + client->config->backoff_cutoff); + } } else if (!client->interval) client->interval = client->config->initial_interval; @@ -2119,11 +2122,13 @@ /* Don't backoff past cutoff. */ if (client -> interval > - client -> config -> backoff_cutoff) + client -> config -> backoff_cutoff) { client -> interval = - ((client -> config -> backoff_cutoff / 2) - + ((random () >> 2) % - client -> config -> backoff_cutoff)); + (client -> config -> backoff_cutoff / 2); + if (client -> config -> backoff_cutoff) + client -> interval += ((random () >> 2) % + client -> config -> backoff_cutoff); + } /* If the backoff would take us to the expiry time, just set the timeout to the expiry time. */