diff options
| author | Junio C Hamano <gitster@pobox.com> | 2016-03-17 09:55:54 -0700 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2016-03-17 11:22:24 -0700 |
| commit | 32c6dca8c428672c11a2a0ddf3cb2f7476caff86 (patch) | |
| tree | 4b4f7532ab4b0be6b2b59d7ff4cf09956b5987fd /builtin/rev-list.c | |
| parent | a2558fb8e1e387b630312311e1d22c95663da5d0 (diff) | |
| parent | 2824e1841b99393d2469c495253d547c643bd8f1 (diff) | |
| download | git-32c6dca8c428672c11a2a0ddf3cb2f7476caff86.tar.gz | |
Merge branch 'jk/path-name-safety-2.4' into maint-2.4
Bugfix patches were backported from the 'master' front to plug heap
corruption holes, to catch integer overflow in the computation of
pathname lengths, and to get rid of the name_path API. Both of
these would have resulted in writing over an under-allocated buffer
when formulating pathnames while tree traversal.
* jk/path-name-safety-2.4:
list-objects: pass full pathname to callbacks
list-objects: drop name_path entirely
list-objects: convert name_path to a strbuf
show_object_with_name: simplify by using path_name()
http-push: stop using name_path
tree-diff: catch integer overflow in combine_diff_path allocation
add helpers for detecting size_t overflow
Diffstat (limited to 'builtin/rev-list.c')
| -rw-r--r-- | builtin/rev-list.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/builtin/rev-list.c b/builtin/rev-list.c index c0b4b53652..7ae255862a 100644 --- a/builtin/rev-list.c +++ b/builtin/rev-list.c @@ -177,9 +177,7 @@ static void finish_commit(struct commit *commit, void *data) free_commit_buffer(commit); } -static void finish_object(struct object *obj, - const struct name_path *path, const char *name, - void *cb_data) +static void finish_object(struct object *obj, const char *name, void *cb_data) { struct rev_list_info *info = cb_data; if (obj->type == OBJ_BLOB && !has_sha1_file(obj->sha1)) @@ -188,15 +186,13 @@ static void finish_object(struct object *obj, parse_object(obj->sha1); } -static void show_object(struct object *obj, - const struct name_path *path, const char *component, - void *cb_data) +static void show_object(struct object *obj, const char *name, void *cb_data) { struct rev_list_info *info = cb_data; - finish_object(obj, path, component, cb_data); + finish_object(obj, name, cb_data); if (info->flags & REV_LIST_QUIET) return; - show_object_with_name(stdout, obj, path, component); + show_object_with_name(stdout, obj, name); } static void show_edge(struct commit *commit) |
