aboutsummaryrefslogtreecommitdiff
path: root/src/test/fuzz/util/descriptor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/fuzz/util/descriptor.cpp')
-rw-r--r--src/test/fuzz/util/descriptor.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/test/fuzz/util/descriptor.cpp b/src/test/fuzz/util/descriptor.cpp
index 5bfd2721ce..0fed2bc5e1 100644
--- a/src/test/fuzz/util/descriptor.cpp
+++ b/src/test/fuzz/util/descriptor.cpp
@@ -15,7 +15,7 @@ void MockedDescriptorConverter::Init() {
// an extended one.
if (IdIsCompPubKey(i) || IdIsUnCompPubKey(i) || IdIsXOnlyPubKey(i) || IdIsConstPrivKey(i)) {
CKey privkey;
- privkey.Set(UCharCast(key_data.begin()), UCharCast(key_data.end()), !IdIsUnCompPubKey(i));
+ privkey.Set(key_data.begin(), key_data.end(), !IdIsUnCompPubKey(i));
if (IdIsCompPubKey(i) || IdIsUnCompPubKey(i)) {
CPubKey pubkey{privkey.GetPubKey()};
keys_str[i] = HexStr(pubkey);
@@ -70,3 +70,17 @@ std::optional<std::string> MockedDescriptorConverter::GetDescriptor(std::string_
return desc;
}
+
+bool HasDeepDerivPath(const FuzzBufferType& buff, const int max_depth)
+{
+ auto depth{0};
+ for (const auto& ch: buff) {
+ if (ch == ',') {
+ // A comma is always present between two key expressions, so we use that as a delimiter.
+ depth = 0;
+ } else if (ch == '/') {
+ if (++depth > max_depth) return true;
+ }
+ }
+ return false;
+}