diff options
author | Junio C Hamano <gitster@pobox.com> | 2019-08-22 22:34:10 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2019-08-22 22:34:10 +0300 |
commit | 1b01cdbf2e65331879a4668880a191dfac953761 (patch) | |
tree | 35a31e23ac1569298371f67b266067df75166cc2 /builtin/merge-tree.c | |
parent | 8aa76abba5e97449740d2e26d57542166f385b4d (diff) | |
parent | 5aa02f98685d78666293149087d3f69b97528cfb (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.c | 5 |
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) |