From 5781a9a2703e96b01587bb95ceebcc53f2cee91c Mon Sep 17 00:00:00 2001 From: David Turner Date: Tue, 18 Apr 2017 17:57:43 -0400 Subject: xgethostname: handle long hostnames If the full hostname doesn't fit in the buffer supplied to gethostname, POSIX does not specify whether the buffer will be null-terminated, so to be safe, we should do it ourselves. Introduce new function, xgethostname, which ensures that there is always a \0 at the end of the buffer. Signed-off-by: David Turner Signed-off-by: Junio C Hamano --- wrapper.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'wrapper.c') diff --git a/wrapper.c b/wrapper.c index e7f1979968..64ebd6c690 100644 --- a/wrapper.c +++ b/wrapper.c @@ -679,3 +679,16 @@ void sleep_millisec(int millisec) { poll(NULL, 0, millisec); } + +int xgethostname(char *buf, size_t len) +{ + /* + * If the full hostname doesn't fit in buf, POSIX does not + * specify whether the buffer will be null-terminated, so to + * be safe, do it ourselves. + */ + int ret = gethostname(buf, len); + if (!ret) + buf[len - 1] = 0; + return ret; +} -- cgit v1.2.3