The first part of actually nd/resolve-ref v2. The last two patches are an attempt to catch overwriting faults in future. git_pathname() and resolve_ref_unsafe() are guarded. (Un)fortunately I ran "make memcheck" but found no new segfaults. Either test coverage is insufficient, or we have done a very good job of reviewing/testing git.git Nguyễn Thái Ngọc Duy (8): Convert many resolve_ref() calls to read_ref*() and ref_exists() Rename resolve_ref() to resolve_ref_unsafe() Re-add resolve_ref() that always returns an allocated buffer cmd_merge: convert to single exit point Use resolve_ref() instead of resolve_ref_unsafe() Convert resolve_ref_unsafe+xstrdup to resolve_ref Guard memory overwriting in resolve_ref_unsafe's static buffer Enable GIT_DEBUG_MEMCHECK on git_pathname() Makefile | 3 ++ branch.c | 2 +- builtin/branch.c | 11 +++---- builtin/checkout.c | 17 ++++++------ builtin/commit.c | 3 +- builtin/fmt-merge-msg.c | 8 ++++- builtin/for-each-ref.c | 7 +--- builtin/fsck.c | 2 +- builtin/merge.c | 56 +++++++++++++++++++++++++---------------- builtin/notes.c | 8 ++++- builtin/receive-pack.c | 5 ++- builtin/remote.c | 10 +++---- builtin/replace.c | 4 +- builtin/show-branch.c | 6 +--- builtin/show-ref.c | 2 +- builtin/symbolic-ref.c | 2 +- builtin/tag.c | 4 +- bundle.c | 2 +- cache.h | 17 +++++++++--- git-compat-util.h | 9 ++++++ notes-merge.c | 2 +- path.c | 28 ++++++++++++++------ reflog-walk.c | 13 +++++---- refs.c | 63 +++++++++++++++++++++++++++++++--------------- remote.c | 10 +++--- transport.c | 2 +- wrapper.c | 21 +++++++++++++++ wt-status.c | 4 +-- 28 files changed, 203 insertions(+), 118 deletions(-) -- 1.7.4.74.g639db -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html