include::../description.adoc[]

== Noncompliant Code Example

----
using System.Diagnostics;
using Microsoft.AspNetCore.Mvc;

namespace WebApplicationDotNetCore.Controllers
{
    public class NoncompliantController : Controller
    {
        public IActionResult Index()
        {
            return View();
        }

        public IActionResult Run(string args)
        {
            Process p = new Process();
            p.StartInfo.FileName = "/usr/bin/file.exe""; 
            p.StartInfo.Arguments = args; // Noncompliant
            p.StartInfo.RedirectStandardOutput = true;
            p.Start();
            string output = p.StandardOutput.ReadToEnd();
            p.Dispose();

            return View();
        }
    }
}
----

== Compliant Solution

----
using System.Diagnostics;
using System.Text.RegularExpressions;
using Microsoft.AspNetCore.Mvc;

namespace WebApplicationDotNetCore.Controllers
{
    public class CompliantController : Controller
    {
        public IActionResult Index()
        {
            return View();
        }

        public IActionResult Run(string arg)
        {
            Process p = new Process();
            p.StartInfo.FileName = "/usr/bin/file.exe""; 
            p.StartInfo.ArgumentList.Add(arg); // Compliant
            p.StartInfo.RedirectStandardOutput = true;
            p.Start();
            string output = p.StandardOutput.ReadToEnd();
            p.Dispose();

            return View();
        }
    }
}
----

include::../see.adoc[]
