diff options
author | David Turner <dturner@twopensource.com> | 2015-10-21 13:54:11 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-10-21 12:47:38 -0700 |
commit | 41284eb0f944fe2d73708bb4105a8e3ccd0297df (patch) | |
tree | d9fb4779370efc2eec5079f72c210bdec900ef87 /t/t5515/refs.br-branches-one-merge_branches-one | |
parent | Git 2.2.3 (diff) | |
download | tgif-41284eb0f944fe2d73708bb4105a8e3ccd0297df.tar.xz |
name-hash: don't reuse cache_entry in dir_entry
Stop reusing cache_entry in dir_entry; doing so causes a
use-after-free bug.
During merges, we free entries that we no longer need in the
destination index. But those entries might have also been stored in
the dir_entry cache, and when a later call to add_to_index found them,
they would be used after being freed.
To prevent this, change dir_entry to store a copy of the name instead
of a pointer to a cache_entry. This entails some refactoring of code
that expects the cache_entry.
Keith McGuigan <kmcguigan@twitter.com> diagnosed this bug and wrote
the initial patch, but this version does not use any of Keith's code.
Helped-by: Keith McGuigan <kmcguigan@twitter.com>
Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: David Turner <dturner@twopensource.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t5515/refs.br-branches-one-merge_branches-one')
0 files changed, 0 insertions, 0 deletions