From: Paul Selkirk Date: Fri, 12 Apr 2013 01:27:25 +0000 (-0400) Subject: [2832] add value checking for 'cache-type' X-Git-Tag: bind10-1.1.0beta2-release~8^2~24^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=946b1df;p=thirdparty%2Fkea.git [2832] add value checking for 'cache-type' --- diff --git a/src/lib/datasrc/cache_config.cc b/src/lib/datasrc/cache_config.cc index 9cfe3b1a7c..b1d583f233 100644 --- a/src/lib/datasrc/cache_config.cc +++ b/src/lib/datasrc/cache_config.cc @@ -37,12 +37,16 @@ getEnabledFromConf(const Element& conf) { std::string getSegmentTypeFromConf(const Element& conf) { - // If cache-zones is not explicitly configured, use the default type. + // If cache-type is not explicitly configured, use the default type. // (Ideally we should retrieve the default from the spec). if (!conf.contains("cache-type")) { return ("local"); } - return (conf.get("cache-type")->stringValue()); + std::string cache_type = conf.get("cache-type")->stringValue(); + if ((cache_type != "local") && (cache_type != "mapped")) { + isc_throw(CacheConfigError, "invalid cache-type"); + } + return (cache_type); } } diff --git a/src/lib/datasrc/tests/cache_config_unittest.cc b/src/lib/datasrc/tests/cache_config_unittest.cc index 8c266ec3b5..cce2462bb0 100644 --- a/src/lib/datasrc/tests/cache_config_unittest.cc +++ b/src/lib/datasrc/tests/cache_config_unittest.cc @@ -238,6 +238,13 @@ TEST_F(CacheConfigTest, getSegmentType) { " \"params\": {}}")); EXPECT_THROW(CacheConfig("MasterFiles", 0, *badconfig, true), isc::data::TypeError); + + // Bad value: should be rejected at construction time + ConstElementPtr badconfig2(Element::fromJSON("{\"cache-enable\": true," + " \"cache-type\": \"bogus\"," + " \"params\": {}}")); + EXPECT_THROW(CacheConfig("MasterFiles", 0, *badconfig2, true), + isc::datasrc::internal::CacheConfigError); } }