X-Git-Url: https://www.tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fproxy.c;h=227be4a5e1cc6882021272f26785730a2842ba8a;hp=e30c1fb01cbc5212ada0f05beaaa43e8a2685541;hb=f2835ed9f5b4fbbaa453b6968dbf82e0afcbff3a;hpb=ad63e9fa6b41ca710e27dad621e34f1bc9bcd305 diff --git a/src/proxy.c b/src/proxy.c index e30c1fb0..227be4a5 100644 --- a/src/proxy.c +++ b/src/proxy.c @@ -256,7 +256,12 @@ int receive_proxy_meta(connection_t *c, int start, int lenin) { char *p = memchr(c->buffer, '\n', c->buflen); if(!p || p - c->buffer >= c->buflen) return 0; - p = memchr(p + 1, '\n', c->buflen - (p + 1 - c->buffer)); + + while((p = memchr(p + 1, '\n', c->buflen - (p + 1 - c->buffer)))) { + if(p > c->buffer + 3 && !memcmp(p - 3, "\r\n\r\n", 4)) + break; + } + if(!p) return 0; @@ -272,6 +277,8 @@ int receive_proxy_meta(connection_t *c, int start, int lenin) { c->allow_request = ID; return replen; } else { + p = memchr(c->buffer, '\n', c->buflen); + p[-1] = 0; logger(LOG_ERR, "Proxy request rejected: %s", c->buffer + 9); return false; }