]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[2124] Don't catch InvalidBufferPosition when parsing wiredata
authorMukund Sivaraman <muks@isc.org>
Sun, 29 Jul 2012 21:03:18 +0000 (02:33 +0530)
committerMukund Sivaraman <muks@isc.org>
Sun, 29 Jul 2012 21:03:18 +0000 (02:33 +0530)
src/lib/dns/rdata/generic/sshfp_44.cc
src/lib/dns/tests/rdata_sshfp_unittest.cc

index 05c9edec2cf6e699ffc829a23c13bb4791010f3b..189f9e6c51d61c10ba1018504d30fcd8a66a823b 100644 (file)
@@ -40,18 +40,13 @@ SSHFP::SSHFP(InputBuffer& buffer, size_t rdata_len) {
         isc_throw(InvalidRdataLength, "SSHFP record too short");
     }
 
-    try {
-        algorithm_ = buffer.readUint8();
-        fingerprint_type_ = buffer.readUint8();
+    algorithm_ = buffer.readUint8();
+    fingerprint_type_ = buffer.readUint8();
 
-        rdata_len -= 2;
-        if (rdata_len > 0) {
-            fingerprint_.resize(rdata_len);
-            buffer.readData(&fingerprint_[0], rdata_len);
-        }
-    } catch (const isc::util::InvalidBufferPosition& e) {
-        isc_throw(InvalidRdataLength,
-                  "SSHFP record shorter than RDATA len: " << e.what());
+    rdata_len -= 2;
+    if (rdata_len > 0) {
+        fingerprint_.resize(rdata_len);
+        buffer.readData(&fingerprint_[0], rdata_len);
     }
 }
 
index cfb0d58633f2b613f4812de6fb54e0c2f409b885..dccd8b1290e09d27646e4a80f067b4331379ac1a 100644 (file)
@@ -141,17 +141,17 @@ TEST_F(Rdata_SSHFP_Test, createFromWire) {
     // fingerprint is shorter than rdata len
     EXPECT_THROW(rdataFactoryFromFile(RRType("SSHFP"), RRClass("IN"),
                                       "rdata_sshfp_fromWire9"),
-                 InvalidRdataLength);
+                 InvalidBufferPosition);
 
     // fingerprint is missing
     EXPECT_THROW(rdataFactoryFromFile(RRType("SSHFP"), RRClass("IN"),
                                       "rdata_sshfp_fromWire10"),
-                 InvalidRdataLength);
+                 InvalidBufferPosition);
 
     // all rdata is missing
     EXPECT_THROW(rdataFactoryFromFile(RRType("SSHFP"), RRClass("IN"),
                                       "rdata_sshfp_fromWire11"),
-                 InvalidRdataLength);
+                 InvalidBufferPosition);
 }
 
 TEST_F(Rdata_SSHFP_Test, toText) {