Browse Source

Merge branch 'tg/memfixes' into maint

Fixes for a handful memory access issues identified by valgrind.

* tg/memfixes:
  sub-process: use child_process.args instead of child_process.argv
  http-push: fix construction of hex value from path
  path.c: fix uninitialized memory access
maint
Junio C Hamano 7 years ago
parent
commit
dd5c88a7a5
  1. 2
      http-push.c
  2. 9
      path.c
  3. 3
      sub-process.c

2
http-push.c

@ -1017,7 +1017,7 @@ static int get_oid_hex_from_objpath(const char *path, struct object_id *oid)
memcpy(hex, path, 2); memcpy(hex, path, 2);
path += 2; path += 2;
path++; /* skip '/' */ path++; /* skip '/' */
memcpy(hex, path, GIT_SHA1_HEXSZ - 2); memcpy(hex + 2, path, GIT_SHA1_HEXSZ - 2);


return get_oid_hex(hex, oid); return get_oid_hex(hex, oid);
} }

9
path.c

@ -33,11 +33,10 @@ static struct strbuf *get_pathname(void)
return sb; return sb;
} }


static char *cleanup_path(char *path) static const char *cleanup_path(const char *path)
{ {
/* Clean it up */ /* Clean it up */
if (!memcmp(path, "./", 2)) { if (skip_prefix(path, "./", &path)) {
path += 2;
while (*path == '/') while (*path == '/')
path++; path++;
} }
@ -46,7 +45,7 @@ static char *cleanup_path(char *path)


static void strbuf_cleanup_path(struct strbuf *sb) static void strbuf_cleanup_path(struct strbuf *sb)
{ {
char *path = cleanup_path(sb->buf); const char *path = cleanup_path(sb->buf);
if (path > sb->buf) if (path > sb->buf)
strbuf_remove(sb, 0, path - sb->buf); strbuf_remove(sb, 0, path - sb->buf);
} }
@ -63,7 +62,7 @@ char *mksnpath(char *buf, size_t n, const char *fmt, ...)
strlcpy(buf, bad_path, n); strlcpy(buf, bad_path, n);
return buf; return buf;
} }
return cleanup_path(buf); return (char *)cleanup_path(buf);
} }


static int dir_prefix(const char *buf, const char *dir) static int dir_prefix(const char *buf, const char *dir)

3
sub-process.c

@ -74,13 +74,12 @@ int subprocess_start(struct hashmap *hashmap, struct subprocess_entry *entry, co
{ {
int err; int err;
struct child_process *process; struct child_process *process;
const char *argv[] = { cmd, NULL };


entry->cmd = cmd; entry->cmd = cmd;
process = &entry->process; process = &entry->process;


child_process_init(process); child_process_init(process);
process->argv = argv; argv_array_push(&process->args, cmd);
process->use_shell = 1; process->use_shell = 1;
process->in = -1; process->in = -1;
process->out = -1; process->out = -1;

Loading…
Cancel
Save