aboutsummaryrefslogtreecommitdiff
path: root/builtin/pack-objects.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2016-03-17 09:55:54 -0700
committerJunio C Hamano <gitster@pobox.com>2016-03-17 11:22:24 -0700
commit32c6dca8c428672c11a2a0ddf3cb2f7476caff86 (patch)
tree4b4f7532ab4b0be6b2b59d7ff4cf09956b5987fd /builtin/pack-objects.c
parenta2558fb8e1e387b630312311e1d22c95663da5d0 (diff)
parent2824e1841b99393d2469c495253d547c643bd8f1 (diff)
downloadgit-32c6dca8c428672c11a2a0ddf3cb2f7476caff86.tar.gz
git-32c6dca8c428672c11a2a0ddf3cb2f7476caff86.tar.xz
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/pack-objects.c')
-rw-r--r--builtin/pack-objects.c15
1 files changed, 2 insertions, 13 deletions
diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c
index c067107a6..4af92f113 100644
--- a/builtin/pack-objects.c
+++ b/builtin/pack-objects.c
@@ -2284,21 +2284,11 @@ static void show_commit(struct commit *commit, void *data)
index_commit_for_bitmap(commit);
}
-static void show_object(struct object *obj,
- const struct name_path *path, const char *last,
- void *data)
+static void show_object(struct object *obj, const char *name, void *data)
{
- char *name = path_name(path, last);
-
add_preferred_base_object(name);
add_object_entry(obj->sha1, obj->type, name, 0);
obj->flags |= OBJECT_ADDED;
-
- /*
- * We will have generated the hash from the name,
- * but not saved a pointer to it - we can free it
- */
- free((char *)name);
}
static void show_edge(struct commit *commit)
@@ -2480,8 +2470,7 @@ static int get_object_list_from_bitmap(struct rev_info *revs)
}
static void record_recent_object(struct object *obj,
- const struct name_path *path,
- const char *last,
+ const char *name,
void *data)
{
sha1_array_append(&recent_objects, obj->sha1);