diff --git a/MalwareMultiScan.Backends/Backends/Abstracts/AbstractLocalProcessScanBackend.cs b/MalwareMultiScan.Backends/Backends/Abstracts/AbstractLocalProcessScanBackend.cs index 11e2f98..f46606b 100644 --- a/MalwareMultiScan.Backends/Backends/Abstracts/AbstractLocalProcessScanBackend.cs +++ b/MalwareMultiScan.Backends/Backends/Abstracts/AbstractLocalProcessScanBackend.cs @@ -21,6 +21,7 @@ namespace MalwareMultiScan.Backends.Backends.Abstracts protected virtual Regex MatchRegex { get; } protected virtual string BackendPath { get; } protected virtual bool ParseStdErr { get; } + protected virtual bool ThrowOnNonZeroExitCode { get; } = true; protected virtual string GetBackendArguments(string path) { @@ -55,12 +56,15 @@ namespace MalwareMultiScan.Backends.Backends.Abstracts process.WaitForExit(); _logger.LogInformation($"Process has exited with code {process.ExitCode}"); - + var standardOutput = await process.StandardOutput.ReadToEndAsync(); var standardError = await process.StandardError.ReadToEndAsync(); _logger.LogDebug($"Process standard output: {standardOutput}"); _logger.LogDebug($"Process standard error: {standardError}"); + + if (ThrowOnNonZeroExitCode && process.ExitCode != 0) + throw new ApplicationException($"Process has terminated with an exit code {process.ExitCode}"); return MatchRegex .Matches(ParseStdErr ? standardError : standardOutput)