GP-5010: GhidraScript.askFile() no longer throws an

IllegalArgumentException in headless mode when passing in a valid path
argument to a file that does not yet exist (Closes #7025)
This commit is contained in:
Ryan Kurtz 2024-10-11 07:53:29 -04:00
parent 1929645373
commit 7d5a514f25

View File

@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@ -1866,21 +1866,6 @@ public abstract class GhidraScript extends FlatProgramAPI {
return Arrays.asList(s);
}
/**
* Parses a file from a string.
*
* @param s The string to parse.
* @return The file that was parsed from the string.
* @throws IllegalArgumentException if the parsed value is not a valid file.
*/
public File parseFile(String s) {
File f = new File(s);
if (!f.isFile()) {
throw new IllegalArgumentException("Invalid file: " + f);
}
return f;
}
/**
* Attempts to locate a value from script arguments
* or a script properties file using
@ -1929,7 +1914,7 @@ public abstract class GhidraScript extends FlatProgramAPI {
if (isHeadless && !hasDefault) { // require either a props file or a default value
throw new IllegalArgumentException("Error processing variable '" + propertyKey +
"' in headless mode -- it was not found in a .properties file.");
"' in headless mode -- it was not found in script arguments or a .properties file.");
}
return defaultValue; // may be null
}
@ -1939,7 +1924,7 @@ public abstract class GhidraScript extends FlatProgramAPI {
if (isHeadless && !hasDefault) { // require either a props file or a default value
throw new IllegalArgumentException("Error processing variable '" + propertyKey +
"' in headless mode -- it was not found in a .properties file.");
"' in headless mode -- it was not found in script arguments or a .properties file.");
}
return defaultValue;
}
@ -2026,8 +2011,8 @@ public abstract class GhidraScript extends FlatProgramAPI {
* exists).
* </li>
* <li>In the headless environment, this method returns a File object representing the
* .properties String value (if it exists), or throws an Exception if there is an
* invalid or missing .properties value.
* .properties String value, or throws an Exception if there is an invalid or missing
* .properties value.
* </li>
* </ol>
*
@ -2045,7 +2030,7 @@ public abstract class GhidraScript extends FlatProgramAPI {
throws CancelledException {
String key = join(title, approveButtonText);
File existingValue = loadAskValue(this::parseFile, key);
File existingValue = loadAskValue(File::new, key);
if (isRunningHeadless()) {
return existingValue;
}