public void TestGetData() { Dictionary <string, Variant> args = new Dictionary <string, Variant>(); args["Command"] = new Variant("CrashingProgram"); System.Environment.SetEnvironmentVariable("PEACH", "qwertyuiopasdfghjklzxcvbnmqwertyuio"); CrashWrangler w = new CrashWrangler(null, "name", args); w.SessionStarting(); w.IterationStarting(0, false); Thread.Sleep(1000); w.IterationFinished(); Assert.AreEqual(true, w.DetectedFault()); Fault fault = w.GetMonitorData(); Assert.NotNull(fault); Assert.AreEqual(1, fault.collectedData.Count); Assert.True(fault.collectedData.ContainsKey("Log")); Assert.Greater(fault.collectedData["Log"].Length, 0); Assert.True(fault.description.StartsWith("Exploitable_Crash_0x")); w.SessionFinished(); w.StopMonitor(); }
public void TestExitEarlyFault() { Dictionary <string, Variant> args = new Dictionary <string, Variant>(); args["Command"] = new Variant("echo"); args["Arguments"] = new Variant("hello"); args["FaultOnEarlyExit"] = new Variant("true"); CrashWrangler w = new CrashWrangler(null, "name", args); w.IterationStarting(1, false); System.Threading.Thread.Sleep(1000); w.IterationFinished(); Assert.AreEqual(true, w.DetectedFault()); Fault f = w.GetMonitorData(); Assert.NotNull(f); Assert.AreEqual("ProcessExitedEarly", f.folderName); w.SessionFinished(); w.StopMonitor(); }
public void TestExitEarlyFault2() { Variant foo = new Variant("foo"); // FaultOnEarlyExit faults when StartOnCall is used and stop message is not sent Dictionary <string, Variant> args = new Dictionary <string, Variant>(); args["Command"] = new Variant("echo"); args["Arguments"] = new Variant("hello"); args["StartOnCall"] = foo; args["FaultOnEarlyExit"] = new Variant("true"); CrashWrangler w = new CrashWrangler(null, "name", args); w.SessionStarting(); w.IterationStarting(1, false); w.Message("Action.Call", foo); System.Threading.Thread.Sleep(1000); w.IterationFinished(); Assert.AreEqual(true, w.DetectedFault()); Fault f = w.GetMonitorData(); Assert.NotNull(f); Assert.AreEqual("ProcessExitedEarly", f.folderName); w.SessionFinished(); w.StopMonitor(); }
public void TestExitOnCallFault() { Variant foo = new Variant("foo"); Variant bar = new Variant("bar"); Dictionary <string, Variant> args = new Dictionary <string, Variant>(); args["Command"] = new Variant("nc"); args["Arguments"] = new Variant("-l 12345"); args["StartOnCall"] = foo; args["WaitForExitOnCall"] = bar; args["WaitForExitTimeout"] = new Variant("2000"); args["NoCpuKill"] = new Variant("true"); CrashWrangler w = new CrashWrangler(null, "name", args); w.Message("Action.Call", foo); w.Message("Action.Call", bar); w.IterationFinished(); Assert.AreEqual(true, w.DetectedFault()); Fault f = w.GetMonitorData(); Assert.NotNull(f); Assert.AreEqual("ProcessFailedToExit", f.folderName); w.SessionFinished(); w.StopMonitor(); }