mirror of
https://github.com/git/git.git
synced 2024-11-28 04:23:30 +08:00
dir: revert work-around for retired dangerous behavior
directory_exists_in_index_icase() dangerously assumed that it could access one character beyond the end of its directory argument, and that that character would unconditionally be '/'.2eac2a4c
(ls-files -k: a directory only can be killed if the index has a non-directory, 2013-08-15) added a caller which did not respect this undocumented assumption, and680be044
(dir.c::test_one_path(): work around directory_exists_in_index_icase() breakage, 2013-08-23) added a work-around which temporarily appends a '/' before invoking directory_exists_in_index_icase(). Since the dangerous behavior of directory_exists_in_index_icase() has been eliminated, the work-around is now redundant, so retire it (but not the tests added by the same commit). Signed-off-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
d28eec2673
commit
de372b1b46
18
dir.c
18
dir.c
@ -1160,21 +1160,9 @@ static enum path_treatment treat_one_path(struct dir_struct *dir,
|
||||
*/
|
||||
if ((dir->flags & DIR_COLLECT_KILLED_ONLY) &&
|
||||
(dtype == DT_DIR) &&
|
||||
!has_path_in_index) {
|
||||
/*
|
||||
* NEEDSWORK: directory_exists_in_index_icase()
|
||||
* assumes that one byte past the given path is
|
||||
* readable and has '/', which needs to be fixed, but
|
||||
* until then, work it around in the caller.
|
||||
*/
|
||||
strbuf_addch(path, '/');
|
||||
if (directory_exists_in_index(path->buf, path->len - 1) ==
|
||||
index_nonexistent) {
|
||||
strbuf_setlen(path, path->len - 1);
|
||||
return path_none;
|
||||
}
|
||||
strbuf_setlen(path, path->len - 1);
|
||||
}
|
||||
!has_path_in_index &&
|
||||
(directory_exists_in_index(path->buf, path->len) == index_nonexistent))
|
||||
return path_none;
|
||||
|
||||
exclude = is_excluded(dir, path->buf, &dtype);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user