From: Evan Hunt Date: Sat, 19 Jul 2008 01:11:40 +0000 (+0000) Subject: Clients that sent a parameter request list containing the routers option X-Git-Tag: v4_1_0a2~8 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=20210a7bfcc2fdb3812e0248fed1e8efc7c81ee2;p=thirdparty%2Fdhcp.git Clients that sent a parameter request list containing the routers option before the subnet mask option were receiving only the latter. [rt18133] --- diff --git a/RELNOTES b/RELNOTES index dbf36ff4c..8c250ac54 100644 --- a/RELNOTES +++ b/RELNOTES @@ -54,6 +54,10 @@ work on other platforms. Please report any problems and suggested fixes to - Fixed a bug that caused some request types to be logged incorrectly. +- Clients that sent a parameter request list containing the + routers option before the subnet mask option were receiving + only the latter. Fixed. + Changes since 4.1.0a1 - Fixed a coredump when adding a class via OMAPI. diff --git a/common/options.c b/common/options.c index 8728513bf..7971d7458 100644 --- a/common/options.c +++ b/common/options.c @@ -1180,15 +1180,10 @@ store_options(int *ocount, */ if (priority_list[i] == DHO_SUBNET_MASK) { for (ix = i - 1 ; ix >= 0 ; ix--) { - /* We know that anything before 'i' can only - * appear once. So shovel the options to make - * room to bubble the subnet mask ahead, and - * then break out of the loop, we're done. - */ if (priority_list[ix] == DHO_ROUTERS) { - memmove(priority_list + ix + 1, - priority_list + ix, i - ix); + /* swap */ priority_list[ix] = DHO_SUBNET_MASK; + priority_list[i] = DHO_ROUTERS; break; } }