diff options
author | René Scharfe <l.s.r@web.de> | 2017-04-18 17:57:42 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2017-04-18 19:57:41 -0700 |
commit | da25bdb7766c01665500cf7c7b75e76ea1f28b49 (patch) | |
tree | 0130260984ed75f313cacb0fb1c452ce6f47dcf1 /builtin | |
parent | preparing for 2.10.3 (diff) | |
download | tgif-da25bdb7766c01665500cf7c7b75e76ea1f28b49.tar.xz |
use HOST_NAME_MAX to size buffers for gethostname(2)
POSIX limits the length of host names to HOST_NAME_MAX. Export the
fallback definition from daemon.c and use this constant to make all
buffers used with gethostname(2) big enough for any possible result
and a terminating NUL.
Inspired-by: David Turner <dturner@twosigma.com>
Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: David Turner <dturner@twosigma.com>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin')
-rw-r--r-- | builtin/gc.c | 10 | ||||
-rw-r--r-- | builtin/receive-pack.c | 2 |
2 files changed, 8 insertions, 4 deletions
diff --git a/builtin/gc.c b/builtin/gc.c index 069950d0b4..5befd518fd 100644 --- a/builtin/gc.c +++ b/builtin/gc.c @@ -220,7 +220,7 @@ static int need_to_gc(void) static const char *lock_repo_for_gc(int force, pid_t* ret_pid) { static struct lock_file lock; - char my_host[128]; + char my_host[HOST_NAME_MAX + 1]; struct strbuf sb = STRBUF_INIT; struct stat st; uintmax_t pid; @@ -239,8 +239,12 @@ static const char *lock_repo_for_gc(int force, pid_t* ret_pid) fd = hold_lock_file_for_update(&lock, pidfile_path, LOCK_DIE_ON_ERROR); if (!force) { - static char locking_host[128]; + static char locking_host[HOST_NAME_MAX + 1]; + static char *scan_fmt; int should_exit; + + if (!scan_fmt) + scan_fmt = xstrfmt("%s %%%dc", "%"SCNuMAX, HOST_NAME_MAX); fp = fopen(pidfile_path, "r"); memset(locking_host, 0, sizeof(locking_host)); should_exit = @@ -256,7 +260,7 @@ static const char *lock_repo_for_gc(int force, pid_t* ret_pid) * running. */ time(NULL) - st.st_mtime <= 12 * 3600 && - fscanf(fp, "%"SCNuMAX" %127c", &pid, locking_host) == 2 && + fscanf(fp, scan_fmt, &pid, locking_host) == 2 && /* be gentle to concurrent "gc" on remote hosts */ (strcmp(locking_host, my_host) || !kill(pid, 0) || errno == EPERM); if (fp != NULL) diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c index 011db00d31..3ca8ebe0e1 100644 --- a/builtin/receive-pack.c +++ b/builtin/receive-pack.c @@ -1655,7 +1655,7 @@ static const char *unpack(int err_fd, struct shallow_info *si) if (status) return "unpack-objects abnormal exit"; } else { - char hostname[256]; + char hostname[HOST_NAME_MAX + 1]; argv_array_pushl(&child.args, "index-pack", "--stdin", hdr_arg, NULL); |