From 4ad2b8018d3ec0da70544d7a055766d357623bc2 Mon Sep 17 00:00:00 2001 From: Gregory Sanders Date: Fri, 14 Jun 2019 14:32:01 -0400 Subject: [PATCH] CreatePAKListFromExtensionSpace just uses FromBytes for correctness --- src/primitives/pak.cpp | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/primitives/pak.cpp b/src/primitives/pak.cpp index add8268f2b..afe16c6fa7 100644 --- a/src/primitives/pak.cpp +++ b/src/primitives/pak.cpp @@ -175,22 +175,17 @@ bool ScriptHasValidPAKProof(const CScript& script, const uint256& genesis_hash, CPAKList CreatePAKListFromExtensionSpace(const std::vector>& extension_space) { + CPAKList paklist; std::vector> offline_keys; std::vector> online_keys; for (const auto& entry : extension_space) { - // As soon as we find something that is possibly not 2 serialized pubkeys - // we stop looking. CPAKList::FromBytes does pubkey validation itself. if (entry.size() != 66) { - break; + return CPAKList(); } + // Dumbly tries to extract two pubkeys, relies on FromBytes to parse/validate offline_keys.emplace_back(entry.begin(), entry.begin()+33); online_keys.emplace_back(entry.begin()+33, entry.end()); - // Allow additional data, just ignore - if (offline_keys.size() == SECP256K1_WHITELIST_MAX_N_KEYS) { - break; - } } - CPAKList paklist; if (!CPAKList::FromBytes(paklist, offline_keys, online_keys)) { return CPAKList(); }