From: Michal 'vorner' Vaner Date: Mon, 16 Sep 2013 09:35:19 +0000 (+0200) Subject: [2751] Tests for sanity checks of input X-Git-Tag: bind10-1.2.0beta1-release~214^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=37069dfbb56bd41717c439339668807a28ca9be0;p=thirdparty%2Fkea.git [2751] Tests for sanity checks of input --- diff --git a/src/lib/datasrc/memory/rdataset.cc b/src/lib/datasrc/memory/rdataset.cc index 7341e5c8c2..737ecd6052 100644 --- a/src/lib/datasrc/memory/rdataset.cc +++ b/src/lib/datasrc/memory/rdataset.cc @@ -106,7 +106,7 @@ sanityChecks(const ConstRRsetPtr& rrset, const ConstRRsetPtr &sig_rrset, getCoveredType(sig_rrset->getRdataIterator()->getCurrent()); if (old_rdataset && old_rdataset->type != rrtype) { - isc_throw(BadValue, "RR type doesn't match for merging RdataSet"); + isc_throw(BadValue, "RR type doesn't match between RdataSets"); } return (std::pair(rrclass, rrtype)); diff --git a/src/lib/datasrc/tests/memory/rdataset_unittest.cc b/src/lib/datasrc/tests/memory/rdataset_unittest.cc index a531fcc346..d5cebdd062 100644 --- a/src/lib/datasrc/tests/memory/rdataset_unittest.cc +++ b/src/lib/datasrc/tests/memory/rdataset_unittest.cc @@ -697,4 +697,52 @@ TEST_F(RdataSetTest, varyingTTL) { EXPECT_EQ(RRTTL(5), restoreTTL(rdataset->getTTLData())); RdataSet::destroy(mem_sgmt_, rdataset, rrclass); } + +// Creation of rdataset with bad params, with create and subtract +TEST_F(RdataSetTest, badParams) { + const ConstRRsetPtr empty_rrset(new RRset(Name("www.example.com"), + RRClass::IN(), RRType::A(), + RRTTL(3600))); + const ConstRRsetPtr a_rrset = textToRRset("www.example.com. 3600 IN A " + "192.0.2.1"); + const ConstRRsetPtr aaaa_rrset = textToRRset("www.example.com. 3600 IN AAAA " + "2001:db8::1"); + const ConstRRsetPtr sig_rrset = textToRRset("www.example.com. 3600 IN RRSIG " + "A 5 2 3600 20120814220826 " + "20120715220826 1234 " + "example.com. FAKE"); + const ConstRRsetPtr sig_rrset_ch = textToRRset("www.example.com. 3600 CH RRSIG " + "A 5 2 3600 20120814220826 " + "20120715220826 1234 " + "example.com. FAKE", + RRClass::CH()); + SegmentObjectHolder holder(mem_sgmt_, rrclass); + holder.set(RdataSet::create(mem_sgmt_, encoder_, a_rrset, sig_rrset)); + // Empty RRset as rdata + EXPECT_THROW(RdataSet::create(mem_sgmt_, encoder_, empty_rrset, sig_rrset), + isc::BadValue); + // The same for rrsig + EXPECT_THROW(RdataSet::create(mem_sgmt_, encoder_, a_rrset, empty_rrset), + isc::BadValue); + // Similar for subtract + EXPECT_THROW(RdataSet::subtract(mem_sgmt_, encoder_, empty_rrset, + sig_rrset, *holder.get()), + isc::BadValue); + EXPECT_THROW(RdataSet::subtract(mem_sgmt_, encoder_, a_rrset, empty_rrset, + *holder.get()), + isc::BadValue); + // Class mismatch + EXPECT_THROW(RdataSet::create(mem_sgmt_, encoder_, a_rrset, sig_rrset_ch), + isc::BadValue); + EXPECT_THROW(RdataSet::subtract(mem_sgmt_, encoder_, a_rrset, + sig_rrset_ch, *holder.get()), + isc::BadValue); + // Bad rrtype + EXPECT_THROW(RdataSet::create(mem_sgmt_, encoder_, aaaa_rrset, + ConstRRsetPtr(), holder.get()), + isc::BadValue); + EXPECT_THROW(RdataSet::subtract(mem_sgmt_, encoder_, aaaa_rrset, + ConstRRsetPtr(), *holder.get()), + isc::BadValue); +} }