Merge branch 'jk/path-name-safety-2.5' into jk/path-name-safety-2.6

* jk/path-name-safety-2.5:
  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
This commit is contained in:
Junio C Hamano
2016-03-16 10:42:02 -07:00
13 changed files with 84 additions and 146 deletions

View File

@ -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);

View File

@ -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)