X-Git-Url: https://tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Finvitation.c;h=3102e4160378a5303a95d72868ddb90fd0d7c24f;hp=cc6cbd4d36ec706f65c4d9abe78848fd95bfd3be;hb=abb24e9d71b3edb9cacf4c04361cc0dfd4e6a061;hpb=3ccdf50beb6b2d3f2730bdc66006b43190537cde diff --git a/src/invitation.c b/src/invitation.c index cc6cbd4d..3102e416 100644 --- a/src/invitation.c +++ b/src/invitation.c @@ -84,7 +84,7 @@ char *get_my_hostname() { char *port = NULL; char *hostport = NULL; char *name = get_my_name(false); - char filename[PATH_MAX]; + char filename[PATH_MAX] = {0}; // Use first Address statement in own host config file if(check_id(name)) { @@ -182,7 +182,7 @@ again: hostname = xstrdup(line); save: - if(filename) { + if(*filename) { FILE *f = fopen(filename, "a"); if(f) { fprintf(f, "\nAddress = %s\n", hostname); @@ -335,7 +335,11 @@ int cmd_invite(int argc, char *argv[]) { return 1; } chmod(filename, 0600); - ecdsa_write_pem_private_key(key, f); + if(!ecdsa_write_pem_private_key(key, f)) { + fprintf(stderr, "Could not write ECDSA private key\n"); + fclose(f); + return 1; + } fclose(f); if(connect_tincd(false)) @@ -551,7 +555,7 @@ make_names: confbase = NULL; } - make_names(); + make_names(false); free(tinc_conf); free(hosts_dir); @@ -704,6 +708,8 @@ make_names: snprintf(filename, sizeof filename, "%s" SLASH "ed25519_key.priv", confbase); f = fopenmask(filename, "w", 0600); + if(!f) + return false; if(!ecdsa_write_pem_private_key(key, f)) { fprintf(stderr, "Error writing private key!\n"); @@ -725,10 +731,14 @@ make_names: snprintf(filename, sizeof filename, "%s" SLASH "rsa_key.priv", confbase); f = fopenmask(filename, "w", 0600); - rsa_write_pem_private_key(rsa, f); + if(!f || !rsa_write_pem_private_key(rsa, f)) { + fprintf(stderr, "Could not write private RSA key\n"); + } else if(!rsa_write_pem_public_key(rsa, fh)) { + fprintf(stderr, "Could not write public RSA key\n"); + } + fclose(f); - rsa_write_pem_public_key(rsa, fh); fclose(fh); rsa_free(rsa); @@ -756,7 +766,7 @@ ask_netname: } netname = line; - make_names(); + make_names(false); } fprintf(stderr, "Configuration stored in: %s\n", confbase);