mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-12 12:52:35 -03:00
Merge bitcoin/bitcoin#21849: fuzz: Limit toxic test globals to their respective scope
cf83b82cf0
fuzz: Limit toxic test globals to their respective scope (MarcoFalke) Pull request description: Globals in one fuzz target are toxic to all other fuzz targets, because we link all fuzz targets into one binary. Any code called by constructing the global will affect all other targets. This leads to incorrect coverage stats, false-positive crashes, ... ACKs for top commit: practicalswift: cr ACKcf83b82cf0
: non-toxic is better than toxic! laanwj: Code review ACKcf83b82cf0
Tree-SHA512: 5b3a37bcb36fce4160c94f877b2c07704527e3e1842092375c793d2eca77b996ae62889326094020855666bb34fa019fcfe92e8ff8430ce0372227f03ab2b907
This commit is contained in:
commit
3f8f238deb
1 changed files with 10 additions and 7 deletions
|
@ -133,8 +133,7 @@ unsigned int ParseScriptFlags(const std::string& str)
|
|||
std::vector<std::string> words;
|
||||
boost::algorithm::split(words, str, boost::algorithm::is_any_of(","));
|
||||
|
||||
for (const std::string& word : words)
|
||||
{
|
||||
for (const std::string& word : words) {
|
||||
auto it = FLAG_NAMES.find(word);
|
||||
if (it == FLAG_NAMES.end()) throw std::runtime_error("Unknown verification flag " + word);
|
||||
flags |= it->second;
|
||||
|
@ -186,15 +185,19 @@ void Test(const std::string& str)
|
|||
}
|
||||
}
|
||||
|
||||
ECCVerifyHandle handle;
|
||||
void test_init()
|
||||
{
|
||||
static ECCVerifyHandle handle;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
FUZZ_TARGET_INIT_HIDDEN(script_assets_test_minimizer, FuzzFrameworkEmptyInitFun, /* hidden */ true)
|
||||
FUZZ_TARGET_INIT_HIDDEN(script_assets_test_minimizer, test_init, /* hidden */ true)
|
||||
{
|
||||
if (buffer.size() < 2 || buffer.back() != '\n' || buffer[buffer.size() - 2] != ',') return;
|
||||
const std::string str((const char*)buffer.data(), buffer.size() - 2);
|
||||
try {
|
||||
Test(str);
|
||||
} catch (const std::runtime_error&) {}
|
||||
} catch (const std::runtime_error&) {
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
|
Loading…
Reference in a new issue