Skip to content

Commit d535301

Browse files
disallow abbreviated forms of full option names
Previously, due to default behavior of ArgumentParser, global --index-url, --extra-index-url, and --trusted-host options in requirements files could be abbreviated (e.g. "--index" == "--index-url"). As a result, unexpected behavior could occur during processing of a requirements file with these shortened option names when using Pipenv, which could be exploited by a malicious actor to surreptitiously insert pip options using non-obvious abbreviations. For example, adding a line with "--t example.com" to the requirements file would cause Pipenv to treat example.com as trusted, even when example.com presents an invalid TLS certificate. This commit disables support for abbreviated options in the ArgumentParser, to align Pipenv's behavior when parsing global options in a requirements file with the behavior in pip, as expected.
1 parent 3ab4763 commit d535301

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

pipenv/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2053,7 +2053,7 @@ def parse_indexes(line, strict=False):
20532053

20542054
comment_re = re.compile(r"(?:^|\s+)#.*$")
20552055
line = comment_re.sub("", line)
2056-
parser = ArgumentParser("indexes")
2056+
parser = ArgumentParser("indexes", allow_abbrev=False)
20572057
parser.add_argument("-i", "--index-url", dest="index")
20582058
parser.add_argument("--extra-index-url", dest="extra_index")
20592059
parser.add_argument("--trusted-host", dest="trusted_host")

0 commit comments

Comments
 (0)