Merge remote-tracking branch 'origin/patch'

This commit is contained in:
Ryan Kurtz 2023-03-09 12:24:28 -05:00
commit 0773637b0c
3 changed files with 18 additions and 17 deletions

View file

@ -212,10 +212,10 @@ public class AnalyzeHeadless implements GhidraLaunchable {
options.setPropertiesFileDirectories(args[++argi]); options.setPropertiesFileDirectories(args[++argi]);
} }
else if (checkArgument("-import", args, argi)) { else if (checkArgument("-import", args, argi)) {
File inputFile = new File(args[++argi]); File inputFile = new File(args[++argi]).getAbsoluteFile();
if (!inputFile.isDirectory() && !inputFile.isFile()) { if (!inputFile.isDirectory() && !inputFile.isFile()) {
throw new InvalidInputException( throw new InvalidInputException(
inputFile.getAbsolutePath() + " is not a valid directory or file."); inputFile + " is not a valid directory or file.");
} }
HeadlessAnalyzer.checkValidFilename(inputFile); HeadlessAnalyzer.checkValidFilename(inputFile);
@ -234,10 +234,10 @@ public class AnalyzeHeadless implements GhidraLaunchable {
break; break;
} }
File otherFile = new File(nextArg); File otherFile = new File(nextArg).getAbsoluteFile();
if (!otherFile.isFile() && !otherFile.isDirectory()) { if (!otherFile.isFile() && !otherFile.isDirectory()) {
throw new InvalidInputException( throw new InvalidInputException(
otherFile.getAbsolutePath() + " is not a valid directory or file."); otherFile + " is not a valid directory or file.");
} }
HeadlessAnalyzer.checkValidFilename(otherFile); HeadlessAnalyzer.checkValidFilename(otherFile);

View file

@ -115,13 +115,17 @@ public class LocalFileSystem implements GFileSystem, GFileHashProvider {
/** /**
* Converts a {@link File} into a {@link FSRL}. * Converts a {@link File} into a {@link FSRL}.
* <p>
* NOTE: The given {@link File}'s absolute path will be used.
* *
* @param f {@link File} * @param f The {@link File} to convert to an {@link FSRL}
* @return {@link FSRL} * @return The {@link FSRL}
*/ */
public FSRL getLocalFSRL(File f) { public FSRL getLocalFSRL(File f) {
return fsFSRL // We prepend a "/" to ensure that Windows-style paths (i.e. C:\) start with a "/". For
.withPath(FSUtilities.appendPath("/", FilenameUtils.separatorsToUnix(f.getPath()))); // unix-style paths, this redundant "/" will be dropped.
return fsFSRL.withPath(
FSUtilities.appendPath("/", FilenameUtils.separatorsToUnix(f.getAbsolutePath())));
} }
@Override @Override

View file

@ -43,7 +43,6 @@ import ghidra.program.model.symbol.*;
import ghidra.program.model.util.CodeUnitInsertionException; import ghidra.program.model.util.CodeUnitInsertionException;
import ghidra.program.util.AddressEvaluator; import ghidra.program.util.AddressEvaluator;
import ghidra.program.util.string.*; import ghidra.program.util.string.*;
import ghidra.util.Conv;
import ghidra.util.ascii.AsciiCharSetRecognizer; import ghidra.util.ascii.AsciiCharSetRecognizer;
import ghidra.util.datastruct.Accumulator; import ghidra.util.datastruct.Accumulator;
import ghidra.util.datastruct.ListAccumulator; import ghidra.util.datastruct.ListAccumulator;
@ -154,16 +153,14 @@ public class FlatProgramAPI {
} }
/** /**
* Returns the path to the program's executable file. * Returns the {@link File} that the program was originally imported from. It does not
* necessarily still exist on the file system.
* <p>
* For example, <code>c:\temp\test.exe</code>. * For example, <code>c:\temp\test.exe</code>.
* @return path to program's executable file * @return the {@link File} that the program was originally imported from
*/ */
public final File getProgramFile() { public final File getProgramFile() {
File f = new File(currentProgram.getExecutablePath()); return new File(currentProgram.getExecutablePath());
if (f.exists()) {
return f;
}
return null;
} }
/** /**
@ -1916,7 +1913,7 @@ public class FlatProgramAPI {
* @return a new address with the specified offset in the default address space * @return a new address with the specified offset in the default address space
*/ */
public final Address toAddr(int offset) { public final Address toAddr(int offset) {
return toAddr(offset & Conv.INT_MASK); return toAddr(Integer.toUnsignedLong(offset));
} }
/** /**