Strip newline from incoming SPTPS requests.
authorGuus Sliepen <guus@tinc-vpn.org>
Thu, 11 Oct 2012 20:47:13 +0000 (22:47 +0200)
committerGuus Sliepen <guus@tinc-vpn.org>
Thu, 11 Oct 2012 20:47:13 +0000 (22:47 +0200)
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.

src/meta.c

index dfb8392..8786d7f 100644 (file)
@@ -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);