X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=src%2Finvitation.c;h=1fba77e15f3c1e4099ef2e7c6be33e0e8aef7b4f;hb=b6ceafe7a5db5802e483795738943f01f1732926;hp=db9d96291854799e19ed4f947dc4fcba6e599a22;hpb=8fb3cf697d16e4870d7305866d03240acd49b386;p=meshlink diff --git a/src/invitation.c b/src/invitation.c index db9d9629..1fba77e1 100644 --- a/src/invitation.c +++ b/src/invitation.c @@ -194,8 +194,10 @@ done: else xasprintf(&hostport, "%s:%s", hostname, port); } else { - hostport = hostname; - hostname = NULL; + if(strchr(hostname, ':')) + xasprintf(&hostport, "[%s]", hostname); + else + hostport = xstrdup(hostname); } free(hostname); @@ -563,8 +565,8 @@ make_names: fprintf(f, "Name = %s\n", name); - char *filename; - xasprintf(&filename, "%s" SLASH "%s", hosts_dir, name); + char filename[PATH_MAX]; + snprintf(filename,PATH_MAX, "%s" SLASH "%s", hosts_dir, name); FILE *fh = fopen(filename, "w"); if(!fh) { fprintf(stderr, "Could not create file %s: %s\n", filename, strerror(errno)); @@ -624,7 +626,6 @@ make_names: } fclose(f); - free(filename); while(l && !strcasecmp(l, "Name")) { if(!check_id(value)) { @@ -637,7 +638,7 @@ make_names: return false; } - xasprintf(&filename, "%s" SLASH "%s", hosts_dir, value); + snprintf(filename,PATH_MAX, "%s" SLASH "%s", hosts_dir, value); f = fopen(filename, "w"); if(!f) { @@ -665,7 +666,6 @@ make_names: } fclose(f); - free(filename); } // Generate our key and send a copy to the server @@ -677,7 +677,7 @@ make_names: if(!b64key) return false; - xasprintf(&filename, "%s" SLASH "ecdsa_key.priv", confbase); + snprintf(filename,PATH_MAX, "%s" SLASH "ecdsa_key.priv", confbase); f = fopenmask(filename, "w", 0600); if(!ecdsa_write_pem_private_key(key, f)) {