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:
@ -769,7 +769,7 @@ static const char *quote_arg(const char *arg)
|
||||
return arg;
|
||||
|
||||
/* insert \ where necessary */
|
||||
d = q = xmalloc(len+n+3);
|
||||
d = q = xmalloc(st_add3(len, n, 3));
|
||||
*d++ = '"';
|
||||
while (*arg) {
|
||||
if (*arg == '"')
|
||||
@ -852,7 +852,7 @@ static char **get_path_split(void)
|
||||
if (!n)
|
||||
return NULL;
|
||||
|
||||
path = xmalloc((n+1)*sizeof(char *));
|
||||
ALLOC_ARRAY(path, n + 1);
|
||||
p = envpath;
|
||||
i = 0;
|
||||
do {
|
||||
@ -937,7 +937,7 @@ static wchar_t *make_environment_block(char **deltaenv)
|
||||
i++;
|
||||
|
||||
/* copy the environment, leaving space for changes */
|
||||
tmpenv = xmalloc((size + i) * sizeof(char*));
|
||||
ALLOC_ARRAY(tmpenv, size + i);
|
||||
memcpy(tmpenv, environ, size * sizeof(char*));
|
||||
|
||||
/* merge supplied environment changes into the temporary environment */
|
||||
@ -1028,7 +1028,7 @@ static pid_t mingw_spawnve_fd(const char *cmd, const char **argv, char **deltaen
|
||||
free(quoted);
|
||||
}
|
||||
|
||||
wargs = xmalloc((2 * args.len + 1) * sizeof(wchar_t));
|
||||
ALLOC_ARRAY(wargs, st_add(st_mult(2, args.len), 1));
|
||||
xutftowcs(wargs, args.buf, 2 * args.len + 1);
|
||||
strbuf_release(&args);
|
||||
|
||||
@ -1127,7 +1127,7 @@ static int try_shell_exec(const char *cmd, char *const *argv)
|
||||
int argc = 0;
|
||||
const char **argv2;
|
||||
while (argv[argc]) argc++;
|
||||
argv2 = xmalloc(sizeof(*argv) * (argc+1));
|
||||
ALLOC_ARRAY(argv2, argc + 1);
|
||||
argv2[0] = (char *)cmd; /* full path to the script file */
|
||||
memcpy(&argv2[1], &argv[1], sizeof(*argv) * argc);
|
||||
pid = mingw_spawnv(prog, argv2, 1);
|
||||
|
@ -47,7 +47,7 @@ static void msort_with_tmp(void *b, size_t n, size_t s,
|
||||
void git_qsort(void *b, size_t n, size_t s,
|
||||
int (*cmp)(const void *, const void *))
|
||||
{
|
||||
const size_t size = n * s;
|
||||
const size_t size = st_mult(n, s);
|
||||
char buf[1024];
|
||||
|
||||
if (size < sizeof(buf)) {
|
||||
|
@ -18,7 +18,7 @@ int gitsetenv(const char *name, const char *value, int replace)
|
||||
|
||||
namelen = strlen(name);
|
||||
valuelen = strlen(value);
|
||||
envstr = malloc((namelen + valuelen + 2));
|
||||
envstr = malloc(st_add3(namelen, valuelen, 2));
|
||||
if (!envstr) {
|
||||
errno = ENOMEM;
|
||||
return -1;
|
||||
|
@ -32,7 +32,7 @@ void syslog(int priority, const char *fmt, ...)
|
||||
return;
|
||||
}
|
||||
|
||||
str = malloc(str_len + 1);
|
||||
str = malloc(st_add(str_len, 1));
|
||||
if (!str) {
|
||||
warning("malloc failed: '%s'", strerror(errno));
|
||||
return;
|
||||
@ -43,7 +43,7 @@ void syslog(int priority, const char *fmt, ...)
|
||||
va_end(ap);
|
||||
|
||||
while ((pos = strstr(str, "%1")) != NULL) {
|
||||
str = realloc(str, ++str_len + 1);
|
||||
str = realloc(str, st_add(++str_len, 1));
|
||||
if (!str) {
|
||||
warning("realloc failed: '%s'", strerror(errno));
|
||||
return;
|
||||
|
Reference in New Issue
Block a user