Strip DQUOTE from cookie-value and updated doc.

pull/1/head
Tatsuhiro Tsujikawa 2011-05-14 21:24:10 +09:00
parent 3026b18ecd
commit 286991e17d
2 changed files with 12 additions and 0 deletions

View File

@ -67,6 +67,8 @@ std::string::const_iterator getNextDigit
bool parseDate(time_t& time, const std::string& cookieDate)
{
// Following algorithm is described in
// http://tools.ietf.org/html/rfc6265#section-5.1.1
std::vector<std::string> dateTokens;
for(std::string::const_iterator i = cookieDate.begin(),
eoi = cookieDate.end(); i != eoi;) {
@ -198,6 +200,8 @@ bool parse
const std::string& defaultPath,
time_t creationTime)
{
// This implementation is based on the algorithm listed in
// http://tools.ietf.org/html/rfc6265
std::string::const_iterator nvEnd = cookieStr.begin();
std::string::const_iterator end = cookieStr.end();
for(; nvEnd != end && *nvEnd != ';'; ++nvEnd);
@ -211,6 +215,7 @@ bool parse
return false;
}
std::string cookieValue = util::stripIter(eq+1, nvEnd);
cookieValue = util::strip(cookieValue, "\"");
time_t expiryTime = 0;
bool foundExpires = false;
bool persistent = false;

View File

@ -213,6 +213,13 @@ void CookieHelperTest::testParse()
CPPUNIT_ASSERT_EQUAL(std::string("192.168.0.1"), c.getDomain());
CPPUNIT_ASSERT(c.getHostOnly());
}
{
// DQUOTE around cookie-value
std::string str = "id=\"foo\";";
Cookie c;
CPPUNIT_ASSERT(cookie::parse(c, str, "localhost", "/", creationDate));
CPPUNIT_ASSERT_EQUAL(std::string("foo"), c.getValue());
}
}
void CookieHelperTest::testReverseDomainLevel()