Make absolutely sure we can write config files before accepting an invitation.

This commit is contained in:
Guus Sliepen 2013-07-26 15:44:05 +02:00
parent 37cca72e6c
commit d47c79533f

View file

@ -749,9 +749,20 @@ int cmd_join(int argc, char *argv[]) {
return 1;
}
// Make sure confdir exists.
if(mkdir(confdir, 0755) && errno != EEXIST) {
fprintf(stderr, "Could not create directory %s: %s\n", CONFDIR, strerror(errno));
// Make sure confbase exists and is accessible.
if(mkdir(confbase, 0755) && errno != EEXIST) {
fprintf(stderr, "Could not create directory %s: %s\n", confbase, strerror(errno));
return 1;
}
if(access(confbase, R_OK | W_OK | X_OK)) {
fprintf(stderr, "No permission to write in directory %s: %s\n", confbase, strerror(errno));
return 1;
}
// If a netname or explicit configuration directory is specified, check for an existing tinc.conf.
if((netname || confbasegiven) && !access(tinc_conf, F_OK)) {
fprintf(stderr, "Configuration file %s already exists!\n", tinc_conf);
return 1;
}