From: Tomek Mrugalski Date: Wed, 13 Apr 2011 09:53:26 +0000 (+0000) Subject: DHCPv6 server now responds properly if client asks for a prefix that X-Git-Tag: v4_3_0a1~198 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c7aa4dd4a4a3434f6f6ce017d2f4391882730049;p=thirdparty%2Fdhcp.git DHCPv6 server now responds properly if client asks for a prefix that is already assigned to a different client. [ISC-Bugs #23948] --- diff --git a/RELNOTES b/RELNOTES index 7f8f152f5..2b5f9e823 100644 --- a/RELNOTES +++ b/RELNOTES @@ -46,6 +46,9 @@ work on other platforms. Please report any problems and suggested fixes to interfaces with the OS. [ISC-Bugs #23722] CVE: CVE-2011-0997 + +- DHCPv6 server now responds properly if client asks for a prefix that + is already assigned to a different client. [ISC-Bugs #23948] Changes since 4.2.0 diff --git a/server/dhcpv6.c b/server/dhcpv6.c index 50376b1a8..83fa1adfc 100644 --- a/server/dhcpv6.c +++ b/server/dhcpv6.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2010 by Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2006-2011 by Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -3708,7 +3708,9 @@ reply_process_try_prefix(struct reply_state *reply, continue; status = try_client_v6_prefix(&reply->lease, pool, &data_pref); - if (status == ISC_R_SUCCESS) + /* If we found it in this pool (either in use or available), + there is no need to look further. */ + if ( (status == ISC_R_SUCCESS) || (status == ISC_R_ADDRINUSE) ) break; }