packages/net/znc/patches/005-Fix-rare-conflict-of-HTTP-Basic-auth-and-cookies.patch
Jonas Gorski e49e86e036 znc: update to 1.6.0
Fixes compilation with musl.

Requires GCC 4.7 or newer, so broken for octeon.

Signed-off-by: Jonas Gorski <jogo@openwrt.org>
2015-06-19 13:10:19 +02:00

36 lines
1.2 KiB
Diff

From 13c2dc126d8bb4c57273178fc455dab6f02e1efc Mon Sep 17 00:00:00 2001
From: Alexey Sokolov <alexey+znc@asokolov.org>
Date: Thu, 16 Apr 2015 01:21:57 +0100
Subject: [PATCH] Fix rare conflict of HTTP-Basic auth and cookies.
Fix #946
---
src/HTTPSock.cpp | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
--- a/src/HTTPSock.cpp
+++ b/src/HTTPSock.cpp
@@ -122,7 +122,7 @@ void CHTTPSock::ReadLine(const CString&
sLine.Token(2).Base64Decode(sUnhashed);
m_sUser = sUnhashed.Token(0, false, ":");
m_sPass = sUnhashed.Token(1, true, ":");
- m_bLoggedIn = OnLogin(m_sUser, m_sPass, true);
+ // Postpone authorization attempt until end of headers, because cookies should be read before that, otherwise session id will be overwritten in GetSession()
} else if (sName.Equals("Content-Length:")) {
m_uPostLen = sLine.Token(1).ToULong();
if (m_uPostLen > MAX_POST_SIZE)
@@ -170,6 +170,14 @@ void CHTTPSock::ReadLine(const CString&
} else if (sLine.empty()) {
m_bGotHeader = true;
+ if (!m_sUser.empty()) {
+ m_bLoggedIn = OnLogin(m_sUser, m_sPass, true);
+ if (!m_bLoggedIn) {
+ // Error message already was sent
+ return;
+ }
+ }
+
if (m_bPost) {
m_sPostData = GetInternalReadBuffer();
CheckPost();