Skip to content

Commit

Permalink
Pass revisions options explicitly to mercurial commands
Browse files Browse the repository at this point in the history
  • Loading branch information
sbidoul committed Jul 1, 2023
1 parent 4ac0d3d commit 45468f0
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 2 deletions.
3 changes: 3 additions & 0 deletions news/12119.bugfix.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Pass the ``-r`` flag to mercurial to be explicit that a revision is passed and protect
against ``hg`` options injection as part of VCS URLs. Users that do not have control on
VCS URLs passed to pip are advised to upgrade.
2 changes: 1 addition & 1 deletion src/pip/_internal/vcs/mercurial.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ class Mercurial(VersionControl):

@staticmethod
def get_base_rev_args(rev: str) -> List[str]:
return [rev]
return ["-r", rev]

def fetch_new(
self, dest: str, url: HiddenText, rev_options: RevOptions, verbosity: int
Expand Down
2 changes: 1 addition & 1 deletion tests/unit/test_vcs.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ def test_rev_options_repr() -> None:
# First check VCS-specific RevOptions behavior.
(Bazaar, [], ["-r", "123"], {}),
(Git, ["HEAD"], ["123"], {}),
(Mercurial, [], ["123"], {}),
(Mercurial, [], ["-r", "123"], {}),
(Subversion, [], ["-r", "123"], {}),
# Test extra_args. For this, test using a single VersionControl class.
(
Expand Down

0 comments on commit 45468f0

Please sign in to comment.