The pathlib module is the modern OO path API. Path.resolve() expands symlinks (sanitizer when combined with containment check). Path.open / read_text / write_text are file I/O sinks when the path is user-controlled.
.resolve().open().read_text().write_text().open()SinkPath.open(mode='r', buffering=-1, ...) -> IO
Opens the file at this path. Path-traversal sink when path is user-controlled.
.read_text()SinkPath.read_text(encoding=None, errors=None) -> str
Reads the whole file as text. Path-traversal sink.
.write_text()SinkPath.write_text(data, encoding=None, errors=None, newline=None) -> int
Writes text. Path-traversal sink when path is user-controlled.
.resolve()SanitizerPath.resolve(strict=False) -> Path
Resolves symlinks and relative segments. Use with relative_to() for traversal defense.
return.Path()Neutralpathlib.Path(*pathsegments) -> Path
Constructs a path. Neutral; does not defend against traversal.
| FQN | Field | |
|---|---|---|
| pathlib | fqns[0] | |
| pathlib.Path | fqns[1] |
Wrong FQN → 0 findings. Verify with: change fqns to garbage → must produce 0 results.
from codepathfinder.go_rule import PyPathlib