Skip to content

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