mirror of
https://github.com/QuasarApp/LIEF.git
synced 2025-05-09 02:09:34 +00:00
Fix infinite loop
This commit is contained in:
parent
2042b750e0
commit
b9237bf027
@ -140,8 +140,63 @@ void JsonVisitor::visit(const Binary& binary) {
|
||||
if (binary.has_configuration()) {
|
||||
JsonVisitor visitor;
|
||||
const LoadConfiguration& config = binary.load_configuration();
|
||||
config.accept(visitor);
|
||||
visitor.visit(config);
|
||||
WIN_VERSION version = config.version();
|
||||
switch(version) {
|
||||
case WIN_VERSION::WIN_SEH:
|
||||
{
|
||||
visitor(*dynamic_cast<const LoadConfigurationV0*>(&config));
|
||||
break;
|
||||
}
|
||||
|
||||
case WIN_VERSION::WIN8_1:
|
||||
{
|
||||
visitor(*dynamic_cast<const LoadConfigurationV1*>(&config));
|
||||
break;
|
||||
}
|
||||
|
||||
case WIN_VERSION::WIN10_0_9879:
|
||||
{
|
||||
visitor(*dynamic_cast<const LoadConfigurationV2*>(&config));
|
||||
break;
|
||||
}
|
||||
|
||||
case WIN_VERSION::WIN10_0_14286:
|
||||
{
|
||||
visitor(*dynamic_cast<const LoadConfigurationV3*>(&config));
|
||||
break;
|
||||
}
|
||||
|
||||
case WIN_VERSION::WIN10_0_14383:
|
||||
{
|
||||
visitor(*dynamic_cast<const LoadConfigurationV4*>(&config));
|
||||
break;
|
||||
}
|
||||
|
||||
case WIN_VERSION::WIN10_0_14901:
|
||||
{
|
||||
visitor(*dynamic_cast<const LoadConfigurationV5*>(&config));
|
||||
break;
|
||||
}
|
||||
|
||||
case WIN_VERSION::WIN10_0_15002:
|
||||
{
|
||||
visitor(*dynamic_cast<const LoadConfigurationV6*>(&config));
|
||||
break;
|
||||
}
|
||||
|
||||
case WIN_VERSION::WIN10_0_16237:
|
||||
{
|
||||
visitor(*dynamic_cast<const LoadConfigurationV7*>(&config));
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
case WIN_VERSION::WIN_UNKNOWN:
|
||||
default:
|
||||
{
|
||||
visitor(config);
|
||||
}
|
||||
}
|
||||
this->node_["load_configuration"] = visitor.get();
|
||||
}
|
||||
|
||||
@ -680,12 +735,13 @@ void JsonVisitor::visit(const LoadConfiguration& config) {
|
||||
this->node_["reserved1"] = config.reserved1();
|
||||
this->node_["editlist"] = config.editlist();
|
||||
this->node_["security_cookie"] = config.security_cookie();
|
||||
config.accept(*this);
|
||||
|
||||
}
|
||||
|
||||
void JsonVisitor::visit(const LoadConfigurationV0& config) {
|
||||
this->node_["se_handler_table"] = config.se_handler_table();
|
||||
this->node_["se_handler_count"] = config.se_handler_count();
|
||||
this->visit(static_cast<const LoadConfiguration&>(config));
|
||||
}
|
||||
|
||||
void JsonVisitor::visit(const LoadConfigurationV1& config) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user