Пример #1
0
        public async Task <ErrorResponse> Compile(FilePath targetPath, CancellationToken cancel)
        {
            var start = BuildStartInfoProvider.Construct(targetPath.Name.ToString());

            start.WorkingDirectory = targetPath.Directory !;

            var accumulator = OutputAccumulatorFactory();

            var result = await Dropoff.EnqueueAndWait(() =>
            {
                return(ProcessRunner.RunWithCallback(
                           start,
                           outputCallback: accumulator.Process,
                           errorCallback: e => {},
                           cancel: cancel));
            }, cancel).ConfigureAwait(false);

            if (result == 0)
            {
                return(ErrorResponse.Success);
            }

            return(ResultsProcessor.GetResults(
                       targetPath,
                       result,
                       cancel,
                       accumulator));
        }
 public ResultsProcessor_Tests()
 {
     _lastVersionNumberHelper    = new LastVersionNumberHelper();
     _contact1StartVersionNumber = _lastVersionNumberHelper.Contact1StartVersionNumber;
     _contact2StartVersionNumber = _lastVersionNumberHelper.Contact2StartVersionNumber;
     _contsuppStartVersionNumber = _lastVersionNumberHelper.ContsuppStartVersionsNumber;
     _resultsProcessor           = new ResultsProcessor();
     _testAccountno         = "B5040182438 F[6CPLia";
     _createChangeHelper    = new CreateChangeHelper(_testAccountno);
     _changeTrackingProcess = new ChangeTrackingProcess();
     _dataApiClient         = new DataAPIClient();
 }
Пример #3
0
        public GameWindow()
        {
            InitializeComponent();
            ApiHelper.InitializeClient();

            gamesProcessor   = new GamesProcessor();
            resultsProcessor = new ResultsProcessor();
            membersProcessor = new MembersProcessor();
            leaguesProcessor = new LeaguesProcessor();

            membersWithGames   = new List <MemberDTO>();
            membersWithResults = new List <MemberDTO>();
        }
Пример #4
0
        public unsafe void Run(Action <Stream> action, ResultsProcessor iterationCallback)
        {
            if (action is null)
            {
                throw new ArgumentNullException(nameof(action));
            }

            Logger.Write("Starting fuzzer client");

            using (var stdin = Console.OpenStandardInput())
                using (var stream = new UnclosableStreamWrapper(stdin))
                {
                    if (_shmid < 0)
                    {
                        Logger.Write("No afl-fuzz detected, dry run");
                        using (var memory = new UnclosableStreamWrapper(new MemoryStream()))
                        {
                            stream.CopyTo(memory);
                            memory.Seek(0, SeekOrigin.Begin);
                            action(memory);
                        }
                        return;
                    }

                    var ctrlSocket = new ControlSocket.Client();
                    ctrlSocket.Connect(_hostName, _controlPort);

                    Logger.Write("Control channel established");

                    var initial = true;

                    using (var r = new BinaryReader(new AnonymousPipeClientStream(PipeDirection.In, "198")))
                        using (var w = new BinaryWriter(new AnonymousPipeClientStream(PipeDirection.Out, "199")))
                        {
                            w.Write(0);

                            Logger.Write("Afl-fuzz greeting sent");

                            for (int nRun = 1; ; nRun++)
                            {
                                Logger.Write($"Starting test run {nRun}");

                                var pid = ctrlSocket.StartTest(_collectLocations);
                                if (pid == null)
                                {
                                    break;
                                }

                                Logger.Write($"Agent reports ready on {pid}");

                                var alfReq = r.ReadInt32();
                                Logger.Write($"Afz-fuzz ping request: {alfReq}");

                                w.Write(pid.Value);
                                Logger.Write("Afz-fuzz ping replied");

                                Fuzzer.Fault result;

                                using (var memory = new UnclosableStreamWrapper(new MemoryStream()))
                                {
                                    stream.CopyTo(memory);

                                    while (true)
                                    {
                                        memory.Seek(0, SeekOrigin.Begin);

                                        Logger.Write($"Executing test {nRun}");
                                        result = ExecuteAction(action, memory);
                                        if (initial)
                                        {
                                            // initial run
                                            // discard results and retry the test once
                                            Logger.Write("Re-executing initial test");

                                            initial = false;

                                            ctrlSocket.GetStatus(out var c, out var l);

                                            ctrlSocket.StartTest(_collectLocations);
                                            memory.Seek(0, SeekOrigin.Begin);
                                            result = ExecuteAction(action, memory);
                                        }

                                        Logger.Write($"Test execution result is {result}, requesting remote results");

                                        var res = ctrlSocket.GetStatus(out var coverage, out var locations).Value;

                                        if (res != (uint)Fuzzer.Fault.None)
                                        {
                                            result = (Fuzzer.Fault)res;
                                        }

                                        if (!iterationCallback(nRun, locations))
                                        {
                                            Logger.Write($"Test results were not accepted, repeating run {nRun}");
                                            ctrlSocket.StartTest(_collectLocations);
                                            continue;
                                        }

                                        if (coverage.Length == Fuzzer.MapSize)
                                        {
                                            Logger.Write($"Processing remote results");
                                            using (var shmaddr = shmat(_shmid, IntPtr.Zero, 0))
                                            {
                                                byte *sharedMem = (byte *)shmaddr.DangerousGetHandle();
                                                for (int i = 0; i < coverage.Length; ++i)
                                                {
                                                    // simulate instrumentation
                                                    sharedMem[i] += coverage[i];
                                                }
                                            }
                                        }
                                        else
                                        {
                                            throw new InvalidDataException("covarage bitmap is invalid");
                                        }

                                        break;
                                    }
                                }

                                Logger.Write($"Reporting run result to afl-fuzz: {result}");
                                w.Write((uint)result);
                            }
                        }
                }
        }
Пример #5
0
 public void Initialize()
 {
     _results = new ResultsProcessor(5);
 }
        public ActionResult Upload(List <HttpPostedFileBase> files)
        {
            int    itemCount            = files.Count();
            int    successfulItemsCount = 0;
            string fileName             = "";
            string userName             = User.Identity.GetUserName();
            string uId      = User.Identity.GetUserId();
            string errorMsg = "";
            var    path1    = "";
            var    path2    = "";

            List <string> fileList = new List <string>();

            foreach (var item in files)
            {
                if (item != null && item.ContentLength > 0)
                {
                    if (Path.GetExtension(item.FileName).ToLower() == ".csv" || Path.GetExtension(item.FileName).ToLower() == ".txt")
                    {
                        fileName = Path.GetFileName(item.FileName);
                        path1    = Path.Combine(Server.MapPath(Settings.Default.UnprocessedFiles), userName + "_" + fileName);
                        path2    = Path.Combine(Server.MapPath(Settings.Default.ProcessedFiles), userName + "_" + fileName);
                        DirectoryInfo di = new DirectoryInfo(path1);

                        if (!Directory.Exists(path1) && !Directory.Exists(path2))
                        {
                            item.SaveAs(path1);
                            fileList.Add(fileName);
                            successfulItemsCount = successfulItemsCount + 1;
                        }
                        else
                        {
                            errorMsg = errorMsg + " A file with the name " + fileName + " already exists in the database.";
                        }
                    }
                    else
                    {
                        errorMsg = errorMsg + " The file " + fileName + " was not uploaded due to file type restrictions.";
                    }
                }
                else
                {
                    errorMsg = errorMsg + " A file was skipped during validation.";
                }
            }

            if (successfulItemsCount > 0)
            {
                string           rpFailed = "";
                ResultsProcessor rp       = new ResultsProcessor();
                rpFailed = rp.GetFiles(fileList, uId, userName);

                if (rpFailed.Contains("Success"))
                {
                    ViewBag.Message       = "Upload succeeded!";
                    ViewBag.UploadSuccess = true;
                }
                else
                {
                    ViewBag.ErrorMessage  = "One or more files contain variables that could not be calculated.";
                    ViewBag.UploadSuccess = false;
                }
            }

            if (itemCount > successfulItemsCount)
            {
                if (errorMsg.Length > 0)
                {
                    ViewBag.ErrorMessage  = errorMsg;
                    ViewBag.UploadSuccess = false;
                }
                else
                {
                    ViewBag.ErrorMessage  = "One or more files contain variables that could not be calculated.";
                    ViewBag.UploadSuccess = false;
                }
            }

            return(View("~/Views/Documents/Unprocessed/Uploads.cshtml"));
        }