mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-09-25 17:00:36 -09:00
Revert analyzer default enablement change
This commit is contained in:
@@ -15,18 +15,13 @@
|
||||
*/
|
||||
package ghidra.app.plugin.core.analysis;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLEncoder;
|
||||
|
||||
import ghidra.app.services.Analyzer;
|
||||
import ghidra.app.util.importer.MessageLog;
|
||||
import ghidra.framework.options.Options;
|
||||
import ghidra.framework.preferences.Preferences;
|
||||
import ghidra.program.model.address.*;
|
||||
import ghidra.program.model.lang.Language;
|
||||
import ghidra.program.model.listing.Program;
|
||||
import ghidra.util.Msg;
|
||||
import ghidra.util.SystemUtilities;
|
||||
import ghidra.util.exception.CancelledException;
|
||||
import ghidra.util.task.TaskMonitor;
|
||||
|
||||
@@ -36,6 +31,7 @@ public class AnalysisScheduler {
|
||||
private AddressSet removeSet;
|
||||
private AddressSet addSet;
|
||||
|
||||
private boolean defaultEnablement;
|
||||
private boolean enabled;
|
||||
private boolean scheduled;
|
||||
|
||||
@@ -47,42 +43,23 @@ public class AnalysisScheduler {
|
||||
throw new IllegalArgumentException("Analyzer name may not contain a period: " +
|
||||
analyzer.getName());
|
||||
}
|
||||
boolean defaultEnable = analyzer.getDefaultEnablement(analysisMgr.getProgram());
|
||||
enabled = getEnableOverride(defaultEnable);
|
||||
if (rememberEnablementChangeAsUserPreference()) {
|
||||
String val =
|
||||
Preferences.getProperty(getAnalyzerPreferenceName(), Boolean.toString(enabled));
|
||||
enabled = Boolean.valueOf(val);
|
||||
}
|
||||
else if (defaultEnable != enabled) {
|
||||
Msg.warn(this,
|
||||
"Analyzer \'" + analyzer.getName() + "\' for " +
|
||||
analysisMgr.getProgram().getName() + " " + (enabled ? "enabled" : "disabled") +
|
||||
" by PSPEC file override");
|
||||
}
|
||||
defaultEnablement = getDefaultEnablement();
|
||||
enabled = defaultEnablement;
|
||||
removeSet = new AddressSet();
|
||||
addSet = new AddressSet();
|
||||
}
|
||||
|
||||
private boolean rememberEnablementChangeAsUserPreference() {
|
||||
if (!analyzer.rememberEnablementChangeAsUserPreference()) {
|
||||
return false;
|
||||
private boolean getDefaultEnablement() {
|
||||
Program program = analysisMgr.getProgram();
|
||||
boolean defaultEnable = analyzer.getDefaultEnablement(program);
|
||||
boolean override = getEnableOverride(defaultEnable);
|
||||
if (defaultEnable != override) {
|
||||
Msg.warn(AnalysisScheduler.class,
|
||||
"Analyzer \'" + analyzer.getName() + "\' for " + program.getName() + " " +
|
||||
(override ? "enabled" : "disabled") + " by PSPEC file override");
|
||||
defaultEnable = override;
|
||||
}
|
||||
if (SystemUtilities.isInTestingMode() || SystemUtilities.isInHeadlessMode()) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private String getAnalyzerPreferenceName() {
|
||||
String str = analyzer.getName();
|
||||
try {
|
||||
str = URLEncoder.encode(str, "UTF8");
|
||||
}
|
||||
catch (UnsupportedEncodingException e) {
|
||||
// ignore
|
||||
}
|
||||
return "Analyzers." + str;
|
||||
return defaultEnable;
|
||||
}
|
||||
|
||||
synchronized void schedule() {
|
||||
@@ -151,24 +128,14 @@ public class AnalysisScheduler {
|
||||
}
|
||||
|
||||
public void optionsChanged(Options options) {
|
||||
|
||||
boolean defaultEnable = analyzer.getDefaultEnablement(analysisMgr.getProgram());
|
||||
defaultEnable = getEnableOverride(defaultEnable);
|
||||
|
||||
boolean state = options.getBoolean(analyzer.getName(), defaultEnable);
|
||||
if (state != enabled && rememberEnablementChangeAsUserPreference()) {
|
||||
Preferences.setProperty(getAnalyzerPreferenceName(), Boolean.toString(state));
|
||||
}
|
||||
enabled = state;
|
||||
|
||||
enabled = options.getBoolean(analyzer.getName(), defaultEnablement);
|
||||
analyzer.optionsChanged(options.getOptions(analyzer.getName()), analysisMgr.getProgram());
|
||||
}
|
||||
|
||||
public void registerOptions(Options options) {
|
||||
Options analyzerOptions = options.getOptions(analyzer.getName());
|
||||
options.registerOption(analyzer.getName(),
|
||||
enabled, null, analyzer.getDescription());
|
||||
|
||||
options.registerOption(analyzer.getName(), defaultEnablement, null,
|
||||
analyzer.getDescription());
|
||||
analyzer.registerOptions(analyzerOptions, analysisMgr.getProgram());
|
||||
}
|
||||
|
||||
|
||||
@@ -41,11 +41,6 @@ public class StackVariableAnalyzer extends AbstractAnalyzer {
|
||||
setSupportsOneTimeAnalysis();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean rememberEnablementChangeAsUserPreference() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean added(Program program, AddressSetView set, TaskMonitor monitor, MessageLog log) {
|
||||
BackgroundCommand cmd;
|
||||
|
||||
@@ -72,11 +72,6 @@ public abstract class AbstractAnalyzer implements Analyzer {
|
||||
return defaultEnablement;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean rememberEnablementChangeAsUserPreference() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final boolean supportsOneTimeAnalysis() {
|
||||
return supportsOneTimeAnalysis;
|
||||
|
||||
@@ -131,13 +131,4 @@ public interface Analyzer extends ExtensionPoint {
|
||||
*/
|
||||
public boolean isPrototype();
|
||||
|
||||
/**
|
||||
* Returns true if a change to the analyzer enablement should be saved as a user preference
|
||||
* so that it may be establish the default enablement for analysis in other programs.
|
||||
* NOTE: This feature is ignored while operating in test mode or headless mode where
|
||||
* it is expected that explicit enablement/disablement will be utilized.
|
||||
* @return true if an enablement change should be remembered as the new default
|
||||
*/
|
||||
public boolean rememberEnablementChangeAsUserPreference();
|
||||
|
||||
}
|
||||
|
||||
@@ -229,8 +229,4 @@ public abstract class FileFormatAnalyzer implements Analyzer {
|
||||
return program.getMemory().findBytes(start, values, null, true, monitor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean rememberEnablementChangeAsUserPreference() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,11 +63,6 @@ public class PdbAnalyzer extends AbstractAnalyzer {
|
||||
setSupportsOneTimeAnalysis();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean rememberEnablementChangeAsUserPreference() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean added(Program program, AddressSetView set, TaskMonitor monitor, MessageLog log) {
|
||||
|
||||
|
||||
@@ -233,11 +233,6 @@ public class PdbUniversalAnalyzer extends AbstractAnalyzer {
|
||||
pdbApplicatorOptions = new PdbApplicatorOptions();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean rememberEnablementChangeAsUserPreference() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean added(Program program, AddressSetView set, TaskMonitor monitor, MessageLog log)
|
||||
throws CancelledException {
|
||||
|
||||
@@ -222,8 +222,4 @@ public abstract class AbstractJavaAnalyzer implements Analyzer {
|
||||
return program.getMemory().findBytes(start, values, null, true, monitor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean rememberEnablementChangeAsUserPreference() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user