CIDR-debugger: escaping program parameters

This commit is contained in:
Anton Makeev
2010-07-19 16:43:19 +04:00
parent 74db3f0a17
commit 050c064f01
3 changed files with 28 additions and 5 deletions
@@ -28,6 +28,7 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.MessageType;
import com.intellij.openapi.wm.ToolWindowId;
import com.intellij.openapi.wm.ToolWindowManager;
import com.intellij.util.ui.UIUtil;
import org.jetbrains.annotations.NotNull;
import javax.swing.event.HyperlinkEvent;
@@ -47,16 +48,16 @@ public class ExecutionUtil {
}
public static void handleExecutionError(@NotNull final Project project,
@NotNull String toolWindowId,
@NotNull final String toolWindowId,
@NotNull String taskName,
@NotNull ExecutionException e) {
if (e instanceof RunCanceledByUserException) return;
LOG.debug(e);
String error = e.getMessage();
HyperlinkListener listener = null;
LOG.debug(error);
if (error.contains("87") && e instanceof ProcessNotCreatedException) {
final String commandLineString = ((ProcessNotCreatedException)e).getCommandLine().getCommandLineString();
if (commandLineString.length() > 1024 * 32) {
@@ -72,12 +73,18 @@ public class ExecutionUtil {
};
}
}
String message = ExecutionBundle.message("error.running.configuration.with.error.error.message", taskName, error);
final String message = ExecutionBundle.message("error.running.configuration.with.error.error.message", taskName, error);
if (ApplicationManager.getApplication().isUnitTestMode()) {
LOG.error(message);
}
ToolWindowManager.getInstance(project).notifyByBalloon(toolWindowId, MessageType.ERROR, message, null, listener);
final HyperlinkListener finalListener = listener;
UIUtil.invokeLaterIfNeeded(new Runnable() {
@Override
public void run() {
ToolWindowManager.getInstance(project).notifyByBalloon(toolWindowId, MessageType.ERROR, message, null, finalListener);
}
});
}
}
@@ -16,6 +16,7 @@
package com.intellij.xdebugger;
import com.intellij.execution.ExecutionException;
import com.intellij.execution.ui.RunContentDescriptor;
import com.intellij.execution.configurations.RunProfile;
import com.intellij.openapi.project.Project;
@@ -113,6 +114,7 @@ public interface XDebugSession extends AbstractDebuggerSession {
void addSessionListener(@NotNull XDebugSessionListener listener);
void removeSessionListener(@NotNull XDebugSessionListener listener);
void reportError(String message);
@NotNull
String getSessionName();
@@ -20,6 +20,7 @@ import com.intellij.execution.filters.HyperlinkInfo;
import com.intellij.execution.filters.OpenFileHyperlinkInfo;
import com.intellij.execution.process.ProcessHandler;
import com.intellij.execution.runners.ExecutionEnvironment;
import com.intellij.execution.runners.ExecutionUtil;
import com.intellij.execution.runners.ProgramRunner;
import com.intellij.execution.ui.ConsoleView;
import com.intellij.execution.ui.ConsoleViewContentType;
@@ -28,8 +29,11 @@ import com.intellij.openapi.application.ReadAction;
import com.intellij.openapi.application.Result;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.MessageType;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.wm.ToolWindowId;
import com.intellij.openapi.wm.ToolWindowManager;
import com.intellij.util.EventDispatcher;
import com.intellij.util.ui.UIUtil;
import com.intellij.xdebugger.*;
@@ -536,6 +540,16 @@ public class XDebugSessionImpl implements XDebugSession {
}
}
@Override
public void reportError(final String message) {
UIUtil.invokeLaterIfNeeded(new Runnable() {
@Override
public void run() {
ToolWindowManager.getInstance(myProject).notifyByBalloon(ToolWindowId.DEBUG, MessageType.ERROR, message, null, null);
}
});
}
private class MyBreakpointListener implements XBreakpointListener<XBreakpoint<?>> {
public void breakpointAdded(@NotNull final XBreakpoint<?> breakpoint) {
if (!myBreakpointsDisabled) {