]> git.meshlink.io Git - meshlink/blobdiff - src/invitation.c
Make sure meshlink_stop() works as advertised.
[meshlink] / src / invitation.c
index db9d96291854799e19ed4f947dc4fcba6e599a22..1fba77e15f3c1e4099ef2e7c6be33e0e8aef7b4f 100644 (file)
@@ -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)) {