Skip to content

Commit 35b1bb8

Browse files
committed
Add flag for SafeGetFiles
1 parent 73d7c57 commit 35b1bb8

File tree

4 files changed

+28
-6
lines changed

4 files changed

+28
-6
lines changed

BinaryObjectScanner/Options.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,22 @@ public class Options
1111
public bool ScanArchives { get; set; }
1212

1313
/// <summary>
14-
/// Determines if content matches are used or not
14+
/// Determines if content matches are used
1515
/// </summary>
1616
public bool ScanContents { get; set; }
1717

1818
/// <summary>
19-
/// Determines if path matches are used or not
19+
/// Determines if path matches are used
2020
/// </summary>
2121
public bool ScanPaths { get; set; }
2222

2323
/// <summary>
24-
/// Determines if debug information is output or not
24+
/// Determines if subdirectories are scanned
25+
/// </summary>
26+
public bool ScanSubdirectories { get; set; }
27+
28+
/// <summary>
29+
/// Determines if debug information is output
2530
/// </summary>
2631
public bool IncludeDebug { get; set; }
2732
}

BinaryObjectScanner/Scanner.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,13 @@ public class Scanner
3131
/// <param name="scanArchives">Enable scanning archive contents</param>
3232
/// <param name="scanContents">Enable including content detections in output</param>
3333
/// <param name="scanPaths">Enable including path detections in output</param>
34+
/// <param name="scanSubdirectories">Enable scanning subdirectories</param>
3435
/// <param name="includeDebug">Enable including debug information</param>
3536
/// <param name="fileProgress">Optional progress callback</param>
3637
public Scanner(bool scanArchives,
3738
bool scanContents,
3839
bool scanPaths,
40+
bool scanSubdirectories,
3941
bool includeDebug,
4042
IProgress<ProtectionProgress>? fileProgress = null)
4143
{
@@ -44,6 +46,7 @@ public Scanner(bool scanArchives,
4446
ScanArchives = scanArchives,
4547
ScanContents = scanContents,
4648
ScanPaths = scanPaths,
49+
ScanSubdirectories = scanSubdirectories,
4750
IncludeDebug = includeDebug,
4851
};
4952

@@ -93,7 +96,8 @@ public ProtectionDictionary GetProtections(List<string>? paths)
9396
if (Directory.Exists(path))
9497
{
9598
// Enumerate all files at first for easier access
96-
List<string> files = [.. IOExtensions.SafeGetFiles(path, "*", SearchOption.AllDirectories)];
99+
SearchOption searchOption = _options.ScanSubdirectories ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly;
100+
List<string> files = [.. IOExtensions.SafeGetFiles(path, "*", searchOption)];
97101

98102
// Scan for path-detectable protections
99103
if (_options.ScanPaths)

ProtectionScan/Options.cs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,17 @@ internal sealed class Options
2929
/// Scan file contents during protection scanning
3030
/// </summary>
3131
public bool ScanContents { get; private set; } = true;
32+
3233
/// <summary>
3334
/// Scan file paths during protection scanning
3435
/// </summary>
3536
public bool ScanPaths { get; private set; } = true;
3637

38+
/// <summary>
39+
/// Scan subdirectories during protection scanning
40+
/// </summary>
41+
public bool ScanSubdirectories { get; set; } = true;
42+
3743
#endregion
3844

3945
/// <summary>
@@ -74,11 +80,16 @@ internal sealed class Options
7480
options.ScanContents = false;
7581
break;
7682

77-
case "-ns":
83+
case "-np":
7884
case "--no-paths":
7985
options.ScanPaths = false;
8086
break;
8187

88+
case "-ns":
89+
case "--no-subdirs":
90+
options.ScanSubdirectories = false;
91+
break;
92+
8293
default:
8394
options.InputPaths.Add(arg);
8495
break;
@@ -109,7 +120,8 @@ public static void DisplayHelp()
109120
Console.WriteLine("-d, --debug Enable debug mode");
110121
Console.WriteLine("-nc, --no-contents Disable scanning for content checks");
111122
Console.WriteLine("-na, --no-archives Disable scanning archives");
112-
Console.WriteLine("-ns, --no-paths Disable scanning for path checks");
123+
Console.WriteLine("-np, --no-paths Disable scanning for path checks");
124+
Console.WriteLine("-ns, --no-subdirs Disable scanning subdirectories");
113125
}
114126
}
115127
}

ProtectionScan/Program.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ static void Main(string[] args)
3535
options.ScanArchives,
3636
options.ScanContents,
3737
options.ScanPaths,
38+
options.ScanSubdirectories,
3839
options.Debug,
3940
fileProgress);
4041

0 commit comments

Comments
 (0)