From 5a2bbe8c7b3964ddd34e8cbb56b1004152383925 Mon Sep 17 00:00:00 2001 From: Charles-Henri Bruyand Date: Tue, 31 Jul 2018 18:03:28 +0200 Subject: [PATCH] ensure server's weight is properly bounded --- pdns/dnsdist-lua-bindings.cc | 5 ++++- pdns/dnsdist.cc | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/pdns/dnsdist-lua-bindings.cc b/pdns/dnsdist-lua-bindings.cc index 5eb25e1ad2..c20aa10d5b 100644 --- a/pdns/dnsdist-lua-bindings.cc +++ b/pdns/dnsdist-lua-bindings.cc @@ -115,7 +115,10 @@ void setupLuaBindings(bool client) g_lua.registerFunction("getName", &DownstreamState::getName); g_lua.registerFunction("getNameWithAddr", &DownstreamState::getNameWithAddr); g_lua.registerMember("upStatus", &DownstreamState::upStatus); - g_lua.registerMember("weight", &DownstreamState::weight); + g_lua.registerMember("weight", + [](const DownstreamState& s) -> int {return s.weight;}, + [](DownstreamState& s, int newWeight) {s.setWeight(newWeight);} + ); g_lua.registerMember("order", &DownstreamState::order); g_lua.registerMember("name", &DownstreamState::name); diff --git a/pdns/dnsdist.cc b/pdns/dnsdist.cc index f7500f8f4b..d839f4043d 100644 --- a/pdns/dnsdist.cc +++ b/pdns/dnsdist.cc @@ -649,6 +649,10 @@ void DownstreamState::setId(const boost::uuids::uuid& newId) void DownstreamState::setWeight(int newWeight) { + if (newWeight < 1) { + errlog("Error setting server's weight: downstream weight value must be greater than 0."); + return ; + } weight = newWeight; if (!hashes.empty()) { hash(); -- 2.47.2