[pkg-dhcp-devel] Bug#730294: isc-dhcp-client: Infinite loop if rfc3442-classless-static-routes is malformed

Andrew Ayer agwa at andrewayer.name
Sat Nov 23 18:11:12 UTC 2013


Package: isc-dhcp-client
Version: 4.2.4-7
Severity: normal
Tags: patch

Dear Maintainer,

I recently messed up the value of rfc3442-classless-static-routes
on my DHCP server (I had "16, 10, 150, 0, 0, 10, 150, 3, 1" when
it should have been "16, 10, 150, 10, 150, 3, 1") and this caused
/etc/dhcp/dhclient-exit-hooks.d/rfc3442-classless-routes to go into an
infinite loop on my clients.

The problem is that the rfc3442-classless-routes script processes the
rfc3442-classless-static-routes value using a loop that looks like this:

	while [ $# -gt 0 ]; do
		net_length=$1
		# ...
		case $net_length in
			32|31|30|29|28|27|26|25)
				net_address="${2}.${3}.${4}.${5}"
				gateway="${6}.${7}.${8}.${9}"
				shift 9
				;;
			# ...
		esac
		# ...
	done

If the argument to shift is greater than the number of arguments
available, shift prints an error and doesn't shift any arguments at all.
Thus, if the value of rfc3442-classless-static-routes is malformed and
there are fewer arguments than the value of $net_length requires, it's
possible for no shifting to take place and for $# to never reach 0.

I have included a patch to this script which fixes the problem by bailing
out if $# is too small.  (In addition to fixing the infinite loop,
this also prevents the excution of "ip route add" with bogus values for
$net_address and $gateway.)

Regards,

Andrew

-- System Information:
Debian Release: jessie/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: i386 (i686)

Kernel: Linux 3.11-2-686-pae (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages isc-dhcp-client depends on:
ii  debianutils      4.4
ii  iproute          1:3.11.0-1
ii  isc-dhcp-common  4.2.4-7
ii  libc6            2.17-96

isc-dhcp-client recommends no packages.

Versions of packages isc-dhcp-client suggests:
pn  avahi-autoipd  <none>
pn  resolvconf     <none>

-- no debconf information
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dhclient-infinite-loop.patch
Type: text/x-diff
Size: 1078 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/pkg-dhcp-devel/attachments/20131123/3f3432e1/attachment.patch>


More information about the pkg-dhcp-devel mailing list