| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
There was a problem hiding this comment.
This PR tightens GitPython’s unsafe-option filtering to prevent caller-controlled Git options from reading (or writing) arbitrary local files through higher-level APIs (blame, tag creation, and diff), aligning with the referenced security advisories.
Changes:
Copilot reviewed 9 out of 9 changed files in this pull request and generated 1 comment.
Show a summary per file| File | Description |
|---|---|
| test/test_repo.py | Adds regression coverage for newly blocked blame option spellings (including clustered short options). |
| test/test_refs.py | Adds regression coverage for unsafe tag message file options via positional args and legacy ref alias. |
| test/test_diff.py | Adds regression coverage for diff -O (orderfile) blocking and clustered forms; ensures -S remains allowed. |
| git/repo/base.py | Introduces per-command unsafe option lists for blame and diff; wires them into blame checks. |
| git/refs/tag.py | Expands tag unsafe-option checking to include positional inputs and ref-alias-sourced reference. |
| git/index/base.py | Switches index diff unsafe option list to the new diff-specific unsafe set and cluster parsing. |
| git/diff.py | Switches diff unsafe option list to the new diff-specific unsafe set and cluster parsing; updates docs. |
| git/cmd.py | Adds configurable clusterable-short-option support to Git.check_unsafe_options. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Sorry, something went wrong.
There was a problem hiding this comment.
Copilot reviewed 9 out of 9 changed files in this pull request and generated 1 comment.
Suppressed comments (2)git/refs/tag.py:139
if "ref" in kwargs and kwargs["ref"]:
reference = kwargs["ref"]
test/test_diff.py:394
calls = (
lambda target: commit.diff(output=target),
lambda target: commit.diff(other=f"--output={target}"),
lambda target: commit.diff(O=target),
lambda target: commit.diff(other=f"-pO{target}"),
Sorry, something went wrong.
<!-- agent --> Reject file-reading options passed to blame, diff, and tag APIs. Inspect positional values after resolving aliases, recognize unsafe options behind command-specific short-flag clusters, and retain the explicit allow_unsafe_options escape hatch. This closes GHSA-5xxx-qhh7-9287 and GHSA-3wxw-xv34-2frg and covers the adjacent diff order-file sink. Regression tests cover long, short, and clustered options, incremental blame, tag path/reference positionals, the ref keyword alias, both diff entry points, and preservation of diff pickaxe behavior. Git baseline: cf5497b14c; git-blame, git-diff, and git-tag document the relevant file-input options. Assisted-by: GPT 5.6 Co-authored-by: GPT 5.6 <codex@openai.com>
| Back | FazBrowse Home | New Git URL |
Tasks
This section is for Byron only. Models continuing this PR must not add, remove, check, uncheck, rename, or reorder checkboxes here.
Everything below this line was generated by Codex GPT-5.
Created by Codex on behalf of Byron. Byron will review before this is ready to merge.
Summary
Advisories
Advisory summary
Both advisories are medium severity and affect the pip package GitPython through version 3.1.58. No patched version or CVE has been assigned yet. The change prevents caller-controlled Git options from reading local files through high-level blame and tag APIs, and closes the same class of issue in diff order-file handling.
Validation
Git behavior reference: git.git cf5497b14c, including the documented file-input options for git blame, git diff, and git tag.