projects
/
tinc
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
6430f81
)
Fix segfault when Name = $HOST but $HOST is not set.
author
Guus Sliepen
<guus@tinc-vpn.org>
Fri, 27 Sep 2013 07:43:39 +0000
(09:43 +0200)
committer
Guus Sliepen
<guus@tinc-vpn.org>
Fri, 27 Sep 2013 07:43:39 +0000
(09:43 +0200)
src/net_setup.c
patch
|
blob
|
history
diff --git
a/src/net_setup.c
b/src/net_setup.c
index
623ac38
..
e1d9f27
100644
(file)
--- a/
src/net_setup.c
+++ b/
src/net_setup.c
@@
-295,17
+295,18
@@
char *get_name(void) {
if(*name == '$') {
char *envname = getenv(name + 1);
if(*name == '$') {
char *envname = getenv(name + 1);
+ char hostname[32] = "";
if(!envname) {
if(strcmp(name + 1, "HOST")) {
fprintf(stderr, "Invalid Name: environment variable %s does not exist\n", name + 1);
return false;
}
if(!envname) {
if(strcmp(name + 1, "HOST")) {
fprintf(stderr, "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) {
fprintf(stderr, "Could not get hostname: %s\n", strerror(errno));
return false;
}
fprintf(stderr, "Could not get hostname: %s\n", strerror(errno));
return false;
}
- envname[31] = 0;
+ hostname[31] = 0;
+ envname = hostname;
}
free(name);
name = xstrdup(envname);
}
free(name);
name = xstrdup(envname);