From: Guus Sliepen <guus@tinc-vpn.org>
Date: Thu, 11 Oct 2012 20:47:13 +0000 (+0200)
Subject: Strip newline from incoming SPTPS requests.
X-Git-Tag: release-1.1pre3~10
X-Git-Url: http://git.tinc-vpn.org/git/browse?a=commitdiff_plain;h=94ec8d34db0ddef14b5446975663e5ff37e27b45;p=tinc

Strip newline from incoming SPTPS requests.

Most of the code doesn't care whether requests are terminated with a newline or
not, except that when requests are forwarded, it is assumed they do not have
one and a newline is added.  When a node using SPTPS receives a request from
another SPTPS-using node, and forwards it to a non-SPTPS-using node, this will
result in two consecutive newlines, which the latter node will see as an empty,
and thus invalid, request.
---

diff --git a/src/meta.c b/src/meta.c
index dfb8392a..8786d7f8 100644
--- a/src/meta.c
+++ b/src/meta.c
@@ -109,6 +109,11 @@ bool receive_meta_sptps(void *handle, uint8_t type, const char *data, uint16_t l
 		return true;
 	}
 
+	/* Change newline to null byte, just like non-SPTPS requests */
+
+	if(data[length - 1] == '\n')
+		((char *)data)[length - 1] = 0;
+
 	/* Otherwise we are waiting for a request */
 
 	return receive_request(c, data);