From: Junio C Hamano Date: Mon, 24 Apr 2017 05:07:57 +0000 (-0700) Subject: Merge branch 'dt/xgethostname-nul-termination' X-Git-Tag: v2.13.0-rc1~18 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5938454cbc585e0f4bdd9f1cc87c6886a3c1bff3;p=thirdparty%2Fgit.git Merge branch 'dt/xgethostname-nul-termination' gethostname(2) may not NUL terminate the buffer if hostname does not fit; unfortunately there is no easy way to see if our buffer was too small, but at least this will make sure we will not end up using garbage past the end of the buffer. * dt/xgethostname-nul-termination: xgethostname: handle long hostnames use HOST_NAME_MAX to size buffers for gethostname(2) --- 5938454cbc585e0f4bdd9f1cc87c6886a3c1bff3 diff --cc builtin/receive-pack.c index 7f484e7f6b,eee5faaa24..f96834f42c --- a/builtin/receive-pack.c +++ b/builtin/receive-pack.c @@@ -1697,12 -1655,12 +1697,12 @@@ static const char *unpack(int err_fd, s 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); + argv_array_pushl(&child.args, "index-pack", "--stdin", NULL); + push_header_arg(&child.args, &hdr); - if (gethostname(hostname, sizeof(hostname))) + if (xgethostname(hostname, sizeof(hostname))) xsnprintf(hostname, sizeof(hostname), "localhost"); argv_array_pushf(&child.args, "--keep=receive-pack %"PRIuMAX" on %s",