Fix crash when no netname is specified.
[tinc] / src / tincctl.c
index a3688ec..ca354bc 100644 (file)
@@ -187,11 +187,15 @@ static bool parse_options(int argc, char **argv) {
                }
        }
 
-       if(!netname) {
-               netname = getenv("NETNAME");
-               if(netname)
-                       netname = xstrdup(netname);
-       }
+        if(!netname && (netname = getenv("NETNAME")))
+                netname = xstrdup(netname);
+
+        /* netname "." is special: a "top-level name" */
+
+        if(netname && !strcmp(netname, ".")) {
+                free(netname);
+                netname = NULL;
+        }
 
        return true;
 }
@@ -1190,7 +1194,7 @@ static int cmd_config(int argc, char *argv[]) {
 
        while(fgets(buf1, sizeof buf1, f)) {
                buf1[sizeof buf1 - 1] = 0;
-               strcpy(buf2, buf1);
+               strncpy(buf2, buf1, sizeof buf2);
 
                // Parse line in a simple way
                char *bvalue;