mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-09-28 17:11:11 -09:00
Revert analyzer default enablement change
This commit is contained in:
@@ -15,18 +15,13 @@
|
|||||||
*/
|
*/
|
||||||
package ghidra.app.plugin.core.analysis;
|
package ghidra.app.plugin.core.analysis;
|
||||||
|
|
||||||
import java.io.UnsupportedEncodingException;
|
|
||||||
import java.net.URLEncoder;
|
|
||||||
|
|
||||||
import ghidra.app.services.Analyzer;
|
import ghidra.app.services.Analyzer;
|
||||||
import ghidra.app.util.importer.MessageLog;
|
import ghidra.app.util.importer.MessageLog;
|
||||||
import ghidra.framework.options.Options;
|
import ghidra.framework.options.Options;
|
||||||
import ghidra.framework.preferences.Preferences;
|
|
||||||
import ghidra.program.model.address.*;
|
import ghidra.program.model.address.*;
|
||||||
import ghidra.program.model.lang.Language;
|
import ghidra.program.model.lang.Language;
|
||||||
import ghidra.program.model.listing.Program;
|
import ghidra.program.model.listing.Program;
|
||||||
import ghidra.util.Msg;
|
import ghidra.util.Msg;
|
||||||
import ghidra.util.SystemUtilities;
|
|
||||||
import ghidra.util.exception.CancelledException;
|
import ghidra.util.exception.CancelledException;
|
||||||
import ghidra.util.task.TaskMonitor;
|
import ghidra.util.task.TaskMonitor;
|
||||||
|
|
||||||
@@ -36,6 +31,7 @@ public class AnalysisScheduler {
|
|||||||
private AddressSet removeSet;
|
private AddressSet removeSet;
|
||||||
private AddressSet addSet;
|
private AddressSet addSet;
|
||||||
|
|
||||||
|
private boolean defaultEnablement;
|
||||||
private boolean enabled;
|
private boolean enabled;
|
||||||
private boolean scheduled;
|
private boolean scheduled;
|
||||||
|
|
||||||
@@ -47,42 +43,23 @@ public class AnalysisScheduler {
|
|||||||
throw new IllegalArgumentException("Analyzer name may not contain a period: " +
|
throw new IllegalArgumentException("Analyzer name may not contain a period: " +
|
||||||
analyzer.getName());
|
analyzer.getName());
|
||||||
}
|
}
|
||||||
boolean defaultEnable = analyzer.getDefaultEnablement(analysisMgr.getProgram());
|
defaultEnablement = getDefaultEnablement();
|
||||||
enabled = getEnableOverride(defaultEnable);
|
enabled = defaultEnablement;
|
||||||
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");
|
|
||||||
}
|
|
||||||
removeSet = new AddressSet();
|
removeSet = new AddressSet();
|
||||||
addSet = new AddressSet();
|
addSet = new AddressSet();
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean rememberEnablementChangeAsUserPreference() {
|
private boolean getDefaultEnablement() {
|
||||||
if (!analyzer.rememberEnablementChangeAsUserPreference()) {
|
Program program = analysisMgr.getProgram();
|
||||||
return false;
|
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 defaultEnable;
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getAnalyzerPreferenceName() {
|
|
||||||
String str = analyzer.getName();
|
|
||||||
try {
|
|
||||||
str = URLEncoder.encode(str, "UTF8");
|
|
||||||
}
|
|
||||||
catch (UnsupportedEncodingException e) {
|
|
||||||
// ignore
|
|
||||||
}
|
|
||||||
return "Analyzers." + str;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
synchronized void schedule() {
|
synchronized void schedule() {
|
||||||
@@ -151,24 +128,14 @@ public class AnalysisScheduler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void optionsChanged(Options options) {
|
public void optionsChanged(Options options) {
|
||||||
|
enabled = options.getBoolean(analyzer.getName(), defaultEnablement);
|
||||||
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;
|
|
||||||
|
|
||||||
analyzer.optionsChanged(options.getOptions(analyzer.getName()), analysisMgr.getProgram());
|
analyzer.optionsChanged(options.getOptions(analyzer.getName()), analysisMgr.getProgram());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void registerOptions(Options options) {
|
public void registerOptions(Options options) {
|
||||||
Options analyzerOptions = options.getOptions(analyzer.getName());
|
Options analyzerOptions = options.getOptions(analyzer.getName());
|
||||||
options.registerOption(analyzer.getName(),
|
options.registerOption(analyzer.getName(), defaultEnablement, null,
|
||||||
enabled, null, analyzer.getDescription());
|
analyzer.getDescription());
|
||||||
|
|
||||||
analyzer.registerOptions(analyzerOptions, analysisMgr.getProgram());
|
analyzer.registerOptions(analyzerOptions, analysisMgr.getProgram());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -41,11 +41,6 @@ public class StackVariableAnalyzer extends AbstractAnalyzer {
|
|||||||
setSupportsOneTimeAnalysis();
|
setSupportsOneTimeAnalysis();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean rememberEnablementChangeAsUserPreference() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean added(Program program, AddressSetView set, TaskMonitor monitor, MessageLog log) {
|
public boolean added(Program program, AddressSetView set, TaskMonitor monitor, MessageLog log) {
|
||||||
BackgroundCommand cmd;
|
BackgroundCommand cmd;
|
||||||
|
|||||||
@@ -72,11 +72,6 @@ public abstract class AbstractAnalyzer implements Analyzer {
|
|||||||
return defaultEnablement;
|
return defaultEnablement;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean rememberEnablementChangeAsUserPreference() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final boolean supportsOneTimeAnalysis() {
|
public final boolean supportsOneTimeAnalysis() {
|
||||||
return supportsOneTimeAnalysis;
|
return supportsOneTimeAnalysis;
|
||||||
|
|||||||
@@ -131,13 +131,4 @@ public interface Analyzer extends ExtensionPoint {
|
|||||||
*/
|
*/
|
||||||
public boolean isPrototype();
|
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);
|
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();
|
setSupportsOneTimeAnalysis();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean rememberEnablementChangeAsUserPreference() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean added(Program program, AddressSetView set, TaskMonitor monitor, MessageLog log) {
|
public boolean added(Program program, AddressSetView set, TaskMonitor monitor, MessageLog log) {
|
||||||
|
|
||||||
|
|||||||
@@ -233,11 +233,6 @@ public class PdbUniversalAnalyzer extends AbstractAnalyzer {
|
|||||||
pdbApplicatorOptions = new PdbApplicatorOptions();
|
pdbApplicatorOptions = new PdbApplicatorOptions();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean rememberEnablementChangeAsUserPreference() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean added(Program program, AddressSetView set, TaskMonitor monitor, MessageLog log)
|
public boolean added(Program program, AddressSetView set, TaskMonitor monitor, MessageLog log)
|
||||||
throws CancelledException {
|
throws CancelledException {
|
||||||
|
|||||||
@@ -222,8 +222,4 @@ public abstract class AbstractJavaAnalyzer implements Analyzer {
|
|||||||
return program.getMemory().findBytes(start, values, null, true, monitor);
|
return program.getMemory().findBytes(start, values, null, true, monitor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean rememberEnablementChangeAsUserPreference() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user