Merge branch 'jk/tighten-alloc' into maint
* jk/tighten-alloc: (23 commits)
compat/mingw: brown paper bag fix for 50a6c8e
ewah: convert to REALLOC_ARRAY, etc
convert ewah/bitmap code to use xmalloc
diff_populate_gitlink: use a strbuf
transport_anonymize_url: use xstrfmt
git-compat-util: drop mempcpy compat code
sequencer: simplify memory allocation of get_message
test-path-utils: fix normalize_path_copy output buffer size
fetch-pack: simplify add_sought_entry
fast-import: simplify allocation in start_packfile
write_untracked_extension: use FLEX_ALLOC helper
prepare_{git,shell}_cmd: use argv_array
use st_add and st_mult for allocation size computation
convert trivial cases to FLEX_ARRAY macros
use xmallocz to avoid size arithmetic
convert trivial cases to ALLOC_ARRAY
convert manual allocations to argv_array
argv-array: add detach function
add helpers for allocating flex-array structs
harden REALLOC_ARRAY and xcalloc against size_t overflow
...
This commit is contained in:
13
remote.c
13
remote.c
@ -928,7 +928,7 @@ static struct ref *alloc_ref_with_prefix(const char *prefix, size_t prefixlen,
|
||||
const char *name)
|
||||
{
|
||||
size_t len = strlen(name);
|
||||
struct ref *ref = xcalloc(1, sizeof(struct ref) + prefixlen + len + 1);
|
||||
struct ref *ref = xcalloc(1, st_add4(sizeof(*ref), prefixlen, len, 1));
|
||||
memcpy(ref->name, prefix, prefixlen);
|
||||
memcpy(ref->name + prefixlen, name, len);
|
||||
return ref;
|
||||
@ -945,9 +945,9 @@ struct ref *copy_ref(const struct ref *ref)
|
||||
size_t len;
|
||||
if (!ref)
|
||||
return NULL;
|
||||
len = strlen(ref->name);
|
||||
cpy = xmalloc(sizeof(struct ref) + len + 1);
|
||||
memcpy(cpy, ref, sizeof(struct ref) + len + 1);
|
||||
len = st_add3(sizeof(struct ref), strlen(ref->name), 1);
|
||||
cpy = xmalloc(len);
|
||||
memcpy(cpy, ref, len);
|
||||
cpy->next = NULL;
|
||||
cpy->symref = xstrdup_or_null(ref->symref);
|
||||
cpy->remote_status = xstrdup_or_null(ref->remote_status);
|
||||
@ -2133,16 +2133,13 @@ static int one_local_ref(const char *refname, const struct object_id *oid,
|
||||
{
|
||||
struct ref ***local_tail = cb_data;
|
||||
struct ref *ref;
|
||||
int len;
|
||||
|
||||
/* we already know it starts with refs/ to get here */
|
||||
if (check_refname_format(refname + 5, 0))
|
||||
return 0;
|
||||
|
||||
len = strlen(refname) + 1;
|
||||
ref = xcalloc(1, sizeof(*ref) + len);
|
||||
ref = alloc_ref(refname);
|
||||
oidcpy(&ref->new_oid, oid);
|
||||
memcpy(ref->name, refname, len);
|
||||
**local_tail = ref;
|
||||
*local_tail = &ref->next;
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user