From: Aki Tuomi Date: Wed, 16 Jul 2014 09:06:24 +0000 (+0300) Subject: Check getTSIGKey response X-Git-Tag: auth-3.4.0-rc1~79^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=40d2dc0783c65d0ff0b79a457bd845e85e099111;p=thirdparty%2Fpdns.git Check getTSIGKey response --- diff --git a/modules/remotebackend/remotebackend.cc b/modules/remotebackend/remotebackend.cc index af02140cbf..508bf775b4 100644 --- a/modules/remotebackend/remotebackend.cc +++ b/modules/remotebackend/remotebackend.cc @@ -514,6 +514,11 @@ bool RemoteBackend::getTSIGKey(const std::string& name, std::string* algorithm, if (this->send(query) == false || this->recv(answer) == false) return false; + if (!answer["result"].IsObject() || + !answer["result"].HasMember("algorithm") || + !answer["result"].HasMember("content")) + throw PDNSException("Invalid response to getTSIGKey, missing field(s)"); + algorithm->assign(getString(answer["result"]["algorithm"])); content->assign(getString(answer["result"]["content"]));