From d5ff0e2187ced5b4b14096da7a64bb6571cc9835 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20B=C3=A9raud?= Date: Fri, 14 Aug 2015 21:37:51 -0400 Subject: [PATCH] dhtrunner: unpack value --- include/opendht/dhtrunner.h | 6 ++++-- src/securedht.cpp | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/include/opendht/dhtrunner.h b/include/opendht/dhtrunner.h index 0f9003c4..552cf50b 100644 --- a/include/opendht/dhtrunner.h +++ b/include/opendht/dhtrunner.h @@ -86,7 +86,8 @@ public: get(hash, [=](const std::vector>& vals) { for (const auto& v : vals) { try { - auto msg = unpack(v->data); + T msg; + msg.unpackValue(*v); if (not cb(std::move(msg))) return false; } catch (const std::exception&) { @@ -145,7 +146,8 @@ public: return listen(hash, [=](const std::vector>& vals) { for (const auto& v : vals) { try { - auto msg = unpack(v->data); + T msg; + msg.unpackValue(*v); if (not cb(std::move(msg))) return false; } catch (const std::exception&) { diff --git a/src/securedht.cpp b/src/securedht.cpp index d2c2ed4c..40d00668 100644 --- a/src/securedht.cpp +++ b/src/securedht.cpp @@ -369,6 +369,8 @@ SecureDht::decrypt(const Value& v) auto msg = msgpack::unpack((const char*)decrypted.data(), decrypted.size()); ret.msgpack_unpack_body(msg.get()); + if (ret.recipient != getId()) + throw crypto::DecryptError("Recipient mismatch"); if (not ret.owner.checkSignature(ret.getToSign(), ret.signature)) throw crypto::DecryptError("Signature mismatch");