From: Guus Sliepen Date: Fri, 27 Sep 2013 09:36:46 +0000 (+0200) Subject: Fix segfault when Name = $HOST but $HOST is not set. X-Git-Tag: import-tinc-1.1~54 X-Git-Url: https://git.meshlink.io/?a=commitdiff_plain;h=68e3efe34980cc82ffc143fc33d3c11b69ec8e2b;p=meshlink Fix segfault when Name = $HOST but $HOST is not set. Conflicts: src/net_setup.c --- diff --git a/src/net_setup.c b/src/net_setup.c index b9c5df7a..601a3258 100644 --- a/src/net_setup.c +++ b/src/net_setup.c @@ -411,17 +411,18 @@ char *get_name(void) { if(*name == '$') { char *envname = getenv(name + 1); + char hostname[32] = ""; if(!envname) { if(strcmp(name + 1, "HOST")) { logger(DEBUG_ALWAYS, LOG_ERR, "Invalid Name: environment variable %s does not exist\n", name + 1); return false; } - char envname[32]; - if(gethostname(envname, 32)) { + if(gethostname(hostname, sizeof hostname) || !*hostname) { logger(DEBUG_ALWAYS, LOG_ERR, "Could not get hostname: %s\n", strerror(errno)); return false; } - envname[31] = 0; + hostname[31] = 0; + envname = hostname; } free(name); name = xstrdup(envname);