From: Marcin Siodelski Date: Tue, 3 Sep 2013 09:36:40 +0000 (+0200) Subject: [3035] Include HW type in the digest when generating DHCID from HW addr. X-Git-Tag: bind10-1.2.0beta1-release~102^2~21^2~18 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=cafeb7250bc2c3400c0d3e7736f6cf3971bf741b;p=thirdparty%2Fkea.git [3035] Include HW type in the digest when generating DHCID from HW addr. --- diff --git a/src/lib/dhcp_ddns/ncr_msg.cc b/src/lib/dhcp_ddns/ncr_msg.cc index bc88df2063..4726850534 100644 --- a/src/lib/dhcp_ddns/ncr_msg.cc +++ b/src/lib/dhcp_ddns/ncr_msg.cc @@ -93,8 +93,16 @@ D2Dhcid::fromHWAddr(const isc::dhcp::HWAddrPtr& hwaddr, isc_throw(isc::dhcp_ddns::DhcidRdataComputeError, "unable to compute DHCID from the HW address, " "NULL pointer has been specified"); + } else if (hwaddr->hwaddr_.empty()) { + isc_throw(isc::dhcp_ddns::DhcidRdataComputeError, + "unable to compute DHCID from the HW address, " + "HW address is empty"); } - createDigest(DHCID_ID_HWADDR, hwaddr->hwaddr_, wire_fqdn); + std::vector hwaddr_data; + hwaddr_data.push_back(hwaddr->htype_); + hwaddr_data.insert(hwaddr_data.end(), hwaddr->hwaddr_.begin(), + hwaddr->hwaddr_.end()); + createDigest(DHCID_ID_HWADDR, hwaddr_data, wire_fqdn); } diff --git a/src/lib/dhcp_ddns/tests/ncr_unittests.cc b/src/lib/dhcp_ddns/tests/ncr_unittests.cc index 19b4f06b99..33ec28833a 100644 --- a/src/lib/dhcp_ddns/tests/ncr_unittests.cc +++ b/src/lib/dhcp_ddns/tests/ncr_unittests.cc @@ -549,8 +549,8 @@ TEST_F(DhcidTest, fromHWAddr) { // The reference DHCID (represented as string of hexadecimal digits) // has been calculated using one of the online calculators. - std::string dhcid_ref = "0000012191B7B21AF97E0E656DF887C5E2D" - "EF30E7758A207EDF4CCB2DE8CA37066021C"; + std::string dhcid_ref = "0000012247F6DC4423C3E8627434A9D686860" + "9D88948F78018B215EDCAA30C0C135035"; // Make sure that the DHCID is valid. EXPECT_EQ(dhcid_ref, dhcid.toStr());