From: Junio C Hamano Date: Thu, 22 Aug 2019 19:34:10 +0000 (-0700) Subject: Merge branch 'jk/tree-walk-overflow' X-Git-Tag: v2.24.0-rc0~170 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1b01cdbf2e65331879a4668880a191dfac953761;p=thirdparty%2Fgit.git 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 --- 1b01cdbf2e65331879a4668880a191dfac953761 diff --cc tree-walk.h index 2a5db29e8f,a3ad54e6ce..abe2caf4e0 --- a/tree-walk.h +++ b/tree-walk.h @@@ -68,13 -69,18 +71,18 @@@ struct traverse_info int show_all_errors; }; -int get_tree_entry(const struct object_id *, const char *, struct object_id *, unsigned short *); +int get_tree_entry(struct repository *, const struct object_id *, const char *, struct object_id *, unsigned short *); - char *make_traverse_path(char *path, const struct traverse_info *info, const struct name_entry *n); + char *make_traverse_path(char *path, size_t pathlen, const struct traverse_info *info, + const char *name, size_t namelen); + void strbuf_make_traverse_path(struct strbuf *out, + const struct traverse_info *info, + const char *name, size_t namelen); void setup_traverse_info(struct traverse_info *info, const char *base); - static inline int traverse_path_len(const struct traverse_info *info, const struct name_entry *n) + static inline size_t traverse_path_len(const struct traverse_info *info, + size_t namelen) { - return info->pathlen + tree_entry_len(n); + return st_add(info->pathlen, namelen); } /* in general, positive means "kind of interesting" */