descriptor: assert we never parse a sane miniscript with no pubkey

This commit is contained in:
Antoine Poinsot committed 2023-07-01 12:12:29 +02:00
1 parent a49402a9ec
commit c7db88af71
1 file changed
+4
+4
View File
@@ -15,6 +15,7 @@
#include <common/args.h> #include <common/args.h>
#include <span.h> #include <span.h>
#include <util/bip32.h> #include <util/bip32.h>
#include <util/check.h>
#include <util/spanparsing.h> #include <util/spanparsing.h>
#include <util/strencodings.h> #include <util/strencodings.h>
#include <util/vector.h> #include <util/vector.h>
@@ -1566,6 +1567,9 @@ std::unique_ptr<DescriptorImpl> ParseScript(uint32_t& key_exp_index, Span<const
} }
return nullptr; return nullptr;
} }
// A signature check is required for a miniscript to be sane. Therefore no sane miniscript
// may have an empty list of public keys.
CHECK_NONFATAL(!parser.m_keys.empty());
return std::make_unique<MiniscriptDescriptor>(std::move(parser.m_keys), std::move(node)); return std::make_unique<MiniscriptDescriptor>(std::move(parser.m_keys), std::move(node));
} }
} }