Skip to content

Commit c065ae8

Browse files
committed
Merge bitcoin/bitcoin#30134: fuzz: add more coverage for ScriptPubKeyMan
e3249f2 fuzz: add more coverage for `ScriptPubKeyMan` (brunoerg) Pull request description: This PR adds more coverage for `ScriptPubKeyMan`: - Check `GetKey` and `HasPrivKey` after adding descriptor key. - Cover `GetEndRange` and `GetKeyPoolSize`. - Cover `MarkUnusedAddresses` with the scripts from ScriptPubKeys and `GetMetadata` with the destinations from them. ACKs for top commit: marcofleon: Tested ACK e3249f2. I ran the updated harness for ~9 hours on an empty corpus, generated a coverage report, and checked that the new functions mentioned were hit. Coverage of `scriptpubkeyman.cpp` increased. murchandamus: Tested ACK e3249f2 Tree-SHA512: cfab91f6c8401174842e79209c0e9225c08f011fe9b41d0a58bcec716ae4545eaf803867f899ed7b5fbcefea45711f91894e36df082ba19732dd310cd9e61a79
2 parents e40df54 + e3249f2 commit c065ae8

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

src/wallet/test/fuzz/scriptpubkeyman.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,15 @@ FUZZ_TARGET(scriptpubkeyman, .init = initialize_spkm)
137137
PKHash{ConsumeUInt160(fuzzed_data_provider)}};
138138
std::string str_sig;
139139
(void)spk_manager->SignMessage(msg, pk_hash, str_sig);
140+
(void)spk_manager->GetMetadata(dest);
141+
}
142+
}
143+
},
144+
[&] {
145+
auto spks{spk_manager->GetScriptPubKeys()};
146+
for (const CScript& spk : spks) {
147+
if (fuzzed_data_provider.ConsumeBool()) {
148+
spk_manager->MarkUnusedAddresses(spk);
140149
}
141150
}
142151
},
@@ -148,6 +157,10 @@ FUZZ_TARGET(scriptpubkeyman, .init = initialize_spkm)
148157
}
149158
spk_manager->AddDescriptorKey(key, key.GetPubKey());
150159
spk_manager->TopUp();
160+
LOCK(spk_manager->cs_desc_man);
161+
auto particular_key{spk_manager->GetKey(key.GetPubKey().GetID())};
162+
assert(*particular_key == key);
163+
assert(spk_manager->HasPrivKey(key.GetPubKey().GetID()));
151164
},
152165
[&] {
153166
std::string descriptor;
@@ -194,6 +207,9 @@ FUZZ_TARGET(scriptpubkeyman, .init = initialize_spkm)
194207
}
195208
);
196209
}
210+
211+
(void)spk_manager->GetEndRange();
212+
(void)spk_manager->GetKeyPoolSize();
197213
}
198214

199215
} // namespace

0 commit comments

Comments
 (0)