X-Git-Url: https://www.tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fprotocol_auth.c;h=a270ffcdbd3f7b1ffa3f421e8bd09140fec8e472;hp=f78e2727de198cf1bed5573e4baee84a9546533c;hb=9c31295123edf56d60e807cec90546f7feedf819;hpb=44f30239c1650877f8f1a4d9a5b56f0dbd0e3ea2 diff --git a/src/protocol_auth.c b/src/protocol_auth.c index f78e2727..a270ffcd 100644 --- a/src/protocol_auth.c +++ b/src/protocol_auth.c @@ -284,13 +284,16 @@ static bool receive_invitation_sptps(void *handle, uint8_t type, const void *dat } // Read the new node's Name from the file - char buf[1024]; + char buf[1024] = ""; fgets(buf, sizeof(buf), f); + size_t buflen = strlen(buf); - if(*buf) { - buf[strlen(buf) - 1] = 0; + // Strip whitespace at the end + while(buflen && strchr(" \t\r\n", buf[buflen - 1])) { + buf[--buflen] = 0; } + // Split the first line into variable and value len = strcspn(buf, " \t="); char *name = buf + len; name += strspn(name, " \t"); @@ -302,6 +305,7 @@ static bool receive_invitation_sptps(void *handle, uint8_t type, const void *dat buf[len] = 0; + // Check that it is a valid Name if(!*buf || !*name || strcasecmp(buf, "Name") || !check_id(name) || !strcmp(name, myself->name)) { logger(DEBUG_ALWAYS, LOG_ERR, "Invalid invitation file %s\n", cookie); fclose(f);