Add tests for join/invite errors
[tinc] / src / invitation.c
index 5db1e98..a95a324 100644 (file)
@@ -333,6 +333,11 @@ int cmd_invite(int argc, char *argv[]) {
                return 1;
        }
 
+       if(argc > 2) {
+               fprintf(stderr, "Too many arguments!\n");
+               return 1;
+       }
+
        // Check validity of the new node's name
        if(!check_id(argv[1])) {
                fprintf(stderr, "Invalid name for node.\n");
@@ -673,7 +678,7 @@ static char *get_value(const char *data, const char *var) {
 }
 
 static char *grep(const char *data, const char *var) {
-       static char value[1024];
+       char value[1024];
 
        const char *p = data;
        size_t varlen = strlen(var);
@@ -713,7 +718,7 @@ static char *grep(const char *data, const char *var) {
 
        memcpy(value, p, e - p);
        value[e - p] = 0;
-       return value;
+       return xstrdup(value);
 }
 
 static bool finalize_join(void) {
@@ -730,10 +735,10 @@ static bool finalize_join(void) {
        }
 
        if(!netname) {
-               const char *net = grep(data, "NetName");
+               char *net = grep(data, "NetName");
 
                if(net) {
-                       netname = xstrdup(net);
+                       netname = net;
 
                        if(!check_netname(netname, true)) {
                                fprintf(stderr, "Unsafe NetName found in invitation!\n");
@@ -1243,7 +1248,7 @@ int cmd_join(int argc, char *argv[]) {
 
                if(!fgets(line, sizeof(line), stdin)) {
                        fprintf(stderr, "Error while reading stdin: %s\n", strerror(errno));
-                       return false;
+                       return 1;
                }
 
                invitation = line;