]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[2124] Catch isc::BadValue and throw InvalidRdataText instead
authorMukund Sivaraman <muks@isc.org>
Mon, 23 Jul 2012 05:50:40 +0000 (11:20 +0530)
committerMukund Sivaraman <muks@isc.org>
Mon, 23 Jul 2012 05:50:40 +0000 (11:20 +0530)
src/lib/dns/rdata/generic/sshfp_44.cc
src/lib/dns/tests/rdata_sshfp_unittest.cc

index 5fa7626bfbeb279c16b393780364daca4948a5fd..ef69789e4b599cedc6014edeb75e25a3f4b907ae 100644 (file)
@@ -85,7 +85,12 @@ SSHFP::SSHFP(const std::string& sshfp_str) {
 
     algorithm_ = algorithm;
     fingerprint_type_ = fingerprint_type;
-    decodeHex(fingerprintbuf.str(), fingerprint_);
+
+    try {
+        decodeHex(fingerprintbuf.str(), fingerprint_);
+    } catch (const isc::BadValue& e) {
+        isc_throw(InvalidRdataText, "Bad SSHFP fingerprint: " << e.what());
+    }
 }
 
 SSHFP::SSHFP(uint8_t algorithm, uint8_t fingerprint_type,
@@ -101,7 +106,12 @@ SSHFP::SSHFP(uint8_t algorithm, uint8_t fingerprint_type,
 
     algorithm_ = algorithm;
     fingerprint_type_ = fingerprint_type;
-    decodeHex(fingerprint, fingerprint_);
+
+    try {
+        decodeHex(fingerprint, fingerprint_);
+    } catch (const isc::BadValue& e) {
+        isc_throw(InvalidRdataText, "Bad SSHFP fingerprint: " << e.what());
+    }
 }
 
 SSHFP::SSHFP(const SSHFP& other) :
index 51ce369d5c8e57651deb2c9a2028dcdfe0e453a6..69bbf9ffdfcdaa6ea6cb508d91d33137e4939af9 100644 (file)
@@ -82,7 +82,7 @@ TEST_F(Rdata_SSHFP_Test, badText) {
     EXPECT_THROW(const generic::SSHFP rdata_sshfp("1"), InvalidRdataText);
     EXPECT_THROW(const generic::SSHFP rdata_sshfp("1 2"), InvalidRdataText);
     EXPECT_THROW(const generic::SSHFP rdata_sshfp("BUCKLE MY SHOES"), InvalidRdataText);
-    EXPECT_THROW(const generic::SSHFP rdata_sshfp("1 2 foo bar"), isc::BadValue);
+    EXPECT_THROW(const generic::SSHFP rdata_sshfp("1 2 foo bar"), InvalidRdataText);
 }
 
 TEST_F(Rdata_SSHFP_Test, copy) {