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 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

@barneygale should this be backported?

A

@barneygale
Copy link
Contributor Author

Yep - 3.11 and 3.10 are also affected.

@AA-Turner AA-Turner added needs backport to 3.10 only security fixes needs backport to 3.11 only security fixes labels May 26, 2022
@brettcannon brettcannon merged commit f32e6b4 into python:main Jun 3, 2022
@miss-islington
Copy link
Contributor

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

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

@bedevere-bot bedevere-bot removed the needs backport to 3.11 only security fixes label Jun 3, 2022
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

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

@bedevere-bot bedevere-bot removed the needs backport to 3.10 only security fixes label Jun 3, 2022
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.

5 participants