Prevent terminal symlink traversal via recursive grep

This commit is contained in:
Mikei386
2026-08-23 19:48:40 +02:00
parent 91d36a98e3
commit 2f4bff550e
2 changed files with 5 additions and 1 deletions
+3 -1
View File
@@ -256,7 +256,9 @@ def validate_arguments(program: str, arguments: list[str], cwd: Path) -> list[st
return ["-n", args[1], *[path_argument(value, cwd) for value in args[2:]]]
if program == "grep":
allowed = {"-c", "-E", "-F", "-i", "-l", "-n", "-r", "-R"}
# GNU grep -R follows symlinks. Only -r is permitted because it skips
# directory symlinks and therefore preserves the visible-root boundary.
allowed = {"-c", "-E", "-F", "-i", "-l", "-n", "-r"}
result = []
index = 0
while index < len(args) and args[index].startswith("-"):