mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-09-28 17:11:11 -09:00
GP-6934: Implement OS/shell-dependent escaping.
This commit is contained in:
@@ -22,7 +22,7 @@ import com.sun.jdi.connect.AttachingConnector;
|
||||
import com.sun.jdi.connect.Connector;
|
||||
import com.sun.jdi.connect.Connector.Argument;
|
||||
|
||||
import ghidra.pty.ShellUtils;
|
||||
import ghidra.pty.ShellUtils.Shell;
|
||||
|
||||
public class JdiArguments {
|
||||
enum Mode {
|
||||
@@ -101,7 +101,7 @@ public class JdiArguments {
|
||||
}
|
||||
String cp = env.get("OPT_TARGET_CLASSPATH");
|
||||
if (!cp.isBlank()) {
|
||||
args.get("options").setValue("-cp " + ShellUtils.generateArgument(cp));
|
||||
args.get("options").setValue("-cp " + Shell.LOCAL.generateArgument(cp));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,6 +50,7 @@ import ghidra.program.model.address.Address;
|
||||
import ghidra.program.model.listing.Program;
|
||||
import ghidra.program.util.ProgramLocation;
|
||||
import ghidra.pty.*;
|
||||
import ghidra.pty.ShellUtils.Shell;
|
||||
import ghidra.trace.model.Trace;
|
||||
import ghidra.trace.model.TraceLocation;
|
||||
import ghidra.util.*;
|
||||
@@ -475,7 +476,7 @@ public abstract class AbstractTraceRmiLaunchOffer implements TraceRmiLaunchOffer
|
||||
parent.getInputStream(), parent.getOutputStream());
|
||||
|
||||
List<String> withoutPath = ShellUtils.removePath(commandLine);
|
||||
terminal.setSubTitle(ShellUtils.generateLine(withoutPath));
|
||||
terminal.setSubTitle(ShellUtils.generateLine(withoutPath, Shell.DISPLAY));
|
||||
TerminalListener resizeListener = new TerminalListener() {
|
||||
@Override
|
||||
public void resized(short cols, short rows) {
|
||||
@@ -490,8 +491,19 @@ public abstract class AbstractTraceRmiLaunchOffer implements TraceRmiLaunchOffer
|
||||
terminal.addTerminalListener(resizeListener);
|
||||
|
||||
env.put("TERM", "xterm-256color");
|
||||
PtySession session =
|
||||
pty.getChild().session(commandLine.toArray(String[]::new), env, workingDirectory);
|
||||
PtySession session;
|
||||
try {
|
||||
session =
|
||||
pty.getChild().session(commandLine.toArray(String[]::new), env, workingDirectory);
|
||||
}
|
||||
catch (Throwable t) {
|
||||
terminal.terminated(-1);
|
||||
pty.close();
|
||||
for (TerminalSession ss : subordinates) {
|
||||
ss.terminate();
|
||||
}
|
||||
throw t;
|
||||
}
|
||||
|
||||
Thread waiter = new Thread(() -> {
|
||||
try {
|
||||
@@ -718,6 +730,7 @@ public abstract class AbstractTraceRmiLaunchOffer implements TraceRmiLaunchOffer
|
||||
* terminates early
|
||||
*/
|
||||
monitor.setMessage("Waiting for connection");
|
||||
monitor.addCancelledListener(acceptor::cancel);
|
||||
connection = acceptOrSessionEnds(acceptor, backEnd);
|
||||
connection.registerTerminals(sessions.values());
|
||||
monitor.increment();
|
||||
|
||||
Reference in New Issue
Block a user