mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-09-28 17:11:11 -09:00
GP-4584 Corrected FID and ConstantPropogator errors (Closes #6453)
This commit is contained in:
@@ -1744,7 +1744,9 @@ public class SymbolicPropogator {
|
|||||||
con.refAddr = con.callAddr;
|
con.refAddr = con.callAddr;
|
||||||
con.inputlist = inputs;
|
con.inputlist = inputs;
|
||||||
con.output = new ArrayList<Varnode>();
|
con.output = new ArrayList<Varnode>();
|
||||||
con.output.add(out);
|
if (out != null) {
|
||||||
|
con.output.add(out);
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
return payload.getPcode(prog, con);
|
return payload.getPcode(prog, con);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,8 +30,7 @@ import ghidra.framework.model.DomainFile;
|
|||||||
import ghidra.program.model.address.*;
|
import ghidra.program.model.address.*;
|
||||||
import ghidra.program.model.lang.*;
|
import ghidra.program.model.lang.*;
|
||||||
import ghidra.program.model.listing.*;
|
import ghidra.program.model.listing.*;
|
||||||
import ghidra.program.model.mem.MemoryAccessException;
|
import ghidra.program.model.mem.*;
|
||||||
import ghidra.program.model.mem.MemoryBlock;
|
|
||||||
import ghidra.program.model.symbol.*;
|
import ghidra.program.model.symbol.*;
|
||||||
import ghidra.util.Msg;
|
import ghidra.util.Msg;
|
||||||
import ghidra.util.exception.CancelledException;
|
import ghidra.util.exception.CancelledException;
|
||||||
@@ -619,15 +618,13 @@ class FidServiceLibraryIngest {
|
|||||||
* @return whether the function is external
|
* @return whether the function is external
|
||||||
*/
|
*/
|
||||||
private static boolean functionIsExternal(Function function) {
|
private static boolean functionIsExternal(Function function) {
|
||||||
if (function.isExternal()) {
|
Memory mem = function.getProgram().getMemory();
|
||||||
return true;
|
|
||||||
}
|
|
||||||
Address entryPoint = function.getEntryPoint();
|
Address entryPoint = function.getEntryPoint();
|
||||||
MemoryBlock block = function.getProgram().getMemory().getBlock(entryPoint);
|
if (function.isExternal() || !mem.contains(entryPoint)) {
|
||||||
if (!block.isInitialized()) {
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
MemoryBlock block = function.getProgram().getMemory().getBlock(entryPoint);
|
||||||
|
return block == null || !block.isInitialized() || block.isExternalBlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void exclude(DomainFile domainFile, Function function,
|
private void exclude(DomainFile domainFile, Function function,
|
||||||
|
|||||||
Reference in New Issue
Block a user