8000 Correct index add directory/file conflict detection by ethomson · Pull Request #6729 · libgit2/libgit2 · GitHub
[go: up one dir, main page]

Skip to content

Correct index add directory/file conflict detection #6729

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 relat 8000 ed emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Feb 6, 2024

Conversation

ethomson
Copy link
Member
@ethomson ethomson commented Feb 6, 2024

has_dir_name is used to check for directory/file collisions, and attempts to determine whether the index contains a file with a directory name that is a proper subset of the new index entry that we're trying to add.

To determine directory name, the function would walk the path string backwards to identify a /, stopping at the end of the string. However, the function assumed that the strings did not start with a /. If the paths contain only a single / at the beginning of the string, then the function would continue the loop, erroneously, when they should have stopped at the first character.

Correct the order of the tests to terminate properly.

Thanks to the Amazon AWS Security team for finding and responsibly disclosing this.

Ensure that we can `git_index_add` a slash-prefixed path, followed by
re-adding the same path. The original entry should be replaced by the
new entry.
`has_dir_name` is used to check for directory/file collisions,
and attempts to determine whether the index contains a file with
a directory name that is a proper subset of the new index entry
that we're trying to add.

To determine directory name, the function would walk the path string
backwards to identify a `/`, stopping at the end of the string. However,
the function assumed that the strings did not start with a `/`. If the
paths contain only a single `/` at the beginning of the string, then the
function would continue the loop, erroneously, when they should have
stopped at the first character.

Correct the order of the tests to terminate properly.

Credit to Michael Rodler (@f0rki) and Amazon AWS Security.
@ethomson
Copy link
Member Author
ethomson commented Feb 6, 2024

Note: this was included in v1.6.5 and v1.7.2.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant
0