OSDN Git Service

Merge branch 'dt/name-hash-dir-entry-fix' into maint
authorJunio C Hamano <gitster@pobox.com>
Tue, 3 Nov 2015 23:32:40 +0000 (15:32 -0800)
committerJunio C Hamano <gitster@pobox.com>
Tue, 3 Nov 2015 23:32:40 +0000 (15:32 -0800)
commit3a27eec48ecfcc0764c90b3f478a124c01c082bc
tree792ef7ba9534ad1cc1a76a06cde16e8d8f3f3dd8
parentced2321a8df8260e7d22e72e2bb5b8c6ab3f2180
parent41284eb0f944fe2d73708bb4105a8e3ccd0297df
Merge branch 'dt/name-hash-dir-entry-fix' into maint

The name-hash subsystem that is used to cope with case insensitive
filesystems keeps track of directories and their on-filesystem
cases for all the paths in the index by holding a pointer to a
randomly chosen cache entry that is inside the directory (for its
ce->ce_name component).  This pointer was not updated even when the
cache entry was removed from the index, leading to use after free.
This was fixed by recording the path for each directory instead of
borrowing cache entries and restructuring the API somewhat.

* dt/name-hash-dir-entry-fix:
  name-hash: don't reuse cache_entry in dir_entry
cache.h
dir.c
read-cache.c