From 9336e7d9af31e11d764f464e5c30a867d408b242 Mon Sep 17 00:00:00 2001 From: Alex Hultman Date: Wed, 10 Jun 2020 22:33:09 +0200 Subject: [PATCH] Stricter PROXY/HTTP detection --- src/ProxyParser.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/ProxyParser.h b/src/ProxyParser.h index 9dc7836..aee2ac1 100644 --- a/src/ProxyParser.h +++ b/src/ProxyParser.h @@ -94,13 +94,13 @@ public: /* Returns [done, consumed] where done = false on failure */ std::pair parse(std::string_view data) { - /* We require at least one byte to be done */ - if (!data.length()) { + /* We require at least four bytes to determine protocol */ + if (data.length() < 4) { return {false, 0}; } - /* HTTP does not start with \r, but PROXY always does */ - if (data[0] != '\r') { + /* HTTP can never start with "\r\n\r\n", but PROXY always does */ + if (memcmp(data.data(), "\r\n\r\n", 4)) { /* This is HTTP, so be done */ return {true, 0}; }