]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
dnsdist: Add proper bound checks for lazy health-check parameters
authorRemi Gacogne <remi.gacogne@powerdns.com>
Thu, 6 Oct 2022 08:48:58 +0000 (10:48 +0200)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Thu, 20 Oct 2022 12:30:58 +0000 (14:30 +0200)
pdns/dnsdist-lua.cc

index aa5cf53ff82ac55f5e39cd8ffe8940e81a8c3c89..873cf704a288a34e27c65a0e29936fad71401183 100644 (file)
@@ -527,19 +527,27 @@ static void setupLuaConfig(LuaContext& luaCtx, bool client, bool configCheck)
                          }
 
                          if (vars.count("lazyHealthCheckSampleSize")) {
-                           config.d_lazyHealthChecksSampleSize = std::stoi(boost::get<string>(vars.at("lazyHealthCheckSampleSize")));
+                           auto value = std::stoi(boost::get<string>(vars.at("lazyHealthCheckSampleSize")));
+                           checkParameterBound("lazyHealthCheckSampleSize", value);
+                           config.d_lazyHealthChecksSampleSize = value;
                          }
 
                          if (vars.count("lazyHealthCheckMinSampleCount")) {
-                           config.d_lazyHealthChecksSampleSize = std::stoi(boost::get<string>(vars.at("lazyHealthCheckThreshold")));
+                           auto value = std::stoi(boost::get<string>(vars.at("lazyHealthCheckMinSampleCount")));
+                           checkParameterBound("lazyHealthCheckMinSampleCount", value);
+                           config.d_lazyHealthChecksMinSampleCount = value;
                          }
 
                          if (vars.count("lazyHealthCheckThreshold")) {
-                           config.d_lazyHealthChecksThreshold = std::stoi(boost::get<string>(vars.at("lazyHealthCheckThreshold")));
+                           auto value = std::stoi(boost::get<string>(vars.at("lazyHealthCheckThreshold")));
+                           checkParameterBound("lazyHealthCheckThreshold", value, std::numeric_limits<uint8_t>::max());
+                           config.d_lazyHealthChecksThreshold = value;
                          }
 
                          if (vars.count("lazyHealthCheckFailedInterval")) {
-                           config.d_lazyHealthChecksFailedInterval = std::stoi(boost::get<string>(vars.at("lazyHealthCheckFailedInterval")));
+                           auto value = std::stoi(boost::get<string>(vars.at("lazyHealthCheckFailedInterval")));
+                           checkParameterBound("lazyHealthCheckFailedInterval", value);
+                           config.d_lazyHealthChecksFailedInterval = value;
                          }
 
                          if (vars.count("lazyHealthCheckMode")) {