Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.kernel.org/pub/scm/git/git.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2019-08-22 22:34:10 +0300
committerJunio C Hamano <gitster@pobox.com>2019-08-22 22:34:10 +0300
commit1b01cdbf2e65331879a4668880a191dfac953761 (patch)
tree35a31e23ac1569298371f67b266067df75166cc2 /builtin/merge-tree.c
parent8aa76abba5e97449740d2e26d57542166f385b4d (diff)
parent5aa02f98685d78666293149087d3f69b97528cfb (diff)
Merge branch 'jk/tree-walk-overflow'
Codepaths to walk tree objects have been audited for integer overflows and hardened. * jk/tree-walk-overflow: tree-walk: harden make_traverse_path() length computations tree-walk: add a strbuf wrapper for make_traverse_path() tree-walk: accept a raw length for traverse_path_len() tree-walk: use size_t consistently tree-walk: drop oid from traverse_info setup_traverse_info(): stop copying oid
Diffstat (limited to 'builtin/merge-tree.c')
-rw-r--r--builtin/merge-tree.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/builtin/merge-tree.c b/builtin/merge-tree.c
index 97b54caeb9..e72714a5a8 100644
--- a/builtin/merge-tree.c
+++ b/builtin/merge-tree.c
@@ -180,8 +180,9 @@ static struct merge_list *create_entry(unsigned stage, unsigned mode, const stru
static char *traverse_path(const struct traverse_info *info, const struct name_entry *n)
{
- char *path = xmallocz(traverse_path_len(info, n) + the_hash_algo->rawsz);
- return make_traverse_path(path, info, n);
+ struct strbuf buf = STRBUF_INIT;
+ strbuf_make_traverse_path(&buf, info, n->path, n->pathlen);
+ return strbuf_detach(&buf, NULL);
}
static void resolve(const struct traverse_info *info, struct name_entry *ours, struct name_entry *result)