Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gh-93156: fix negative indexing into absolute pathlib.PurePath().parents #93273

Merged
merged 1 commit into from Jun 3, 2022

Conversation

barneygale
Copy link
Contributor

@barneygale barneygale commented May 26, 2022

When a _PathParents object has a drive or a root, the length of the object is one less than than the length of self._parts, which resulted in an off-by-one error when path.parents[-n] was fed through to self._parts[:-n - 1]. In particular, path.parents[-1] was a malformed path object with spooky properties.

This is addressed by adding len(self) to negative indices.

Issue link: #93156

…h().parents`

When a `_PathParents` object has a drive or a root, the length of the
object is *one less* than than the length of `self._parts`, which resulted
in an off-by-one error when `path.parents[-n]` was fed through to
`self._parts[:-n - 1]`. In particular, `path.parents[-1]` was a malformed
path object with spooky properties.

This is addressed by adding `len(self)` to negative indices.
@barneygale barneygale requested a review from brettcannon as a code owner May 26, 2022
@barneygale barneygale changed the title gh-93156 - fix negative indexing into absolute pathlib.PurePath().parents gh-93156: fix negative indexing into absolute pathlib.PurePath().parents May 26, 2022
@AA-Turner AA-Turner added type-bug An unexpected behavior, bug, or error stdlib Python modules in the Lib dir labels May 26, 2022
@AA-Turner
Copy link
Member

AA-Turner commented May 26, 2022

@barneygale should this be backported?

A

@barneygale
Copy link
Contributor Author

barneygale commented May 26, 2022

Yep - 3.11 and 3.10 are also affected.

@brettcannon brettcannon merged commit f32e6b4 into python:main Jun 3, 2022
13 checks passed
@miss-islington
Copy link
Contributor

miss-islington commented Jun 3, 2022

Thanks @barneygale for the PR, and @brettcannon for merging it 🌮🎉.. I'm working now to backport this PR to: 3.10, 3.11.
🐍🍒🤖

miss-islington pushed a commit to miss-islington/cpython that referenced this pull request Jun 3, 2022
…h().parents` (pythonGH-93273)

When a `_PathParents` object has a drive or a root, the length of the
object is *one less* than than the length of `self._parts`, which resulted
in an off-by-one error when `path.parents[-n]` was fed through to
`self._parts[:-n - 1]`. In particular, `path.parents[-1]` was a malformed
path object with spooky properties.

This is addressed by adding `len(self)` to negative indices.
(cherry picked from commit f32e6b4)

Co-authored-by: Barney Gale <barney.gale@gmail.com>
@bedevere-bot
Copy link

bedevere-bot commented Jun 3, 2022

GH-93479 is a backport of this pull request to the 3.11 branch.

miss-islington pushed a commit to miss-islington/cpython that referenced this pull request Jun 3, 2022
…h().parents` (pythonGH-93273)

When a `_PathParents` object has a drive or a root, the length of the
object is *one less* than than the length of `self._parts`, which resulted
in an off-by-one error when `path.parents[-n]` was fed through to
`self._parts[:-n - 1]`. In particular, `path.parents[-1]` was a malformed
path object with spooky properties.

This is addressed by adding `len(self)` to negative indices.
(cherry picked from commit f32e6b4)

Co-authored-by: Barney Gale <barney.gale@gmail.com>
@bedevere-bot
Copy link

bedevere-bot commented Jun 3, 2022

GH-93480 is a backport of this pull request to the 3.10 branch.

miss-islington added a commit that referenced this pull request Jun 3, 2022
…rents` (GH-93273)

When a `_PathParents` object has a drive or a root, the length of the
object is *one less* than than the length of `self._parts`, which resulted
in an off-by-one error when `path.parents[-n]` was fed through to
`self._parts[:-n - 1]`. In particular, `path.parents[-1]` was a malformed
path object with spooky properties.

This is addressed by adding `len(self)` to negative indices.
(cherry picked from commit f32e6b4)

Co-authored-by: Barney Gale <barney.gale@gmail.com>
miss-islington added a commit that referenced this pull request Jun 3, 2022
…rents` (GH-93273)

When a `_PathParents` object has a drive or a root, the length of the
object is *one less* than than the length of `self._parts`, which resulted
in an off-by-one error when `path.parents[-n]` was fed through to
`self._parts[:-n - 1]`. In particular, `path.parents[-1]` was a malformed
path object with spooky properties.

This is addressed by adding `len(self)` to negative indices.
(cherry picked from commit f32e6b4)

Co-authored-by: Barney Gale <barney.gale@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
stdlib Python modules in the Lib dir type-bug An unexpected behavior, bug, or error
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants