[BrowserKit] Fix cookie path handling when $domain is null

This commit is contained in:
Kévin Dunglas 2018-03-16 18:29:18 +01:00
parent 1390529b0f
commit acc20fc755
No known key found for this signature in database
GPG Key ID: 4D04EBEF06AAF3A6
2 changed files with 14 additions and 23 deletions

View File

@ -43,32 +43,21 @@ class CookieJar
{
$this->flushExpiredCookies();
if (!empty($domain)) {
foreach ($this->cookieJar as $cookieDomain => $pathCookies) {
if ($cookieDomain) {
$cookieDomain = '.'.ltrim($cookieDomain, '.');
if ($cookieDomain !== substr('.'.$domain, -\strlen($cookieDomain))) {
continue;
}
}
foreach ($pathCookies as $cookiePath => $namedCookies) {
if (0 !== strpos($path, $cookiePath)) {
continue;
}
if (isset($namedCookies[$name])) {
return $namedCookies[$name];
}
foreach ($this->cookieJar as $cookieDomain => $pathCookies) {
if ($cookieDomain && $domain) {
$cookieDomain = '.'.ltrim($cookieDomain, '.');
if ($cookieDomain !== substr('.'.$domain, -\strlen($cookieDomain))) {
continue;
}
}
return;
}
// avoid relying on this behavior that is mainly here for BC reasons
foreach ($this->cookieJar as $cookies) {
if (isset($cookies[$path][$name])) {
return $cookies[$path][$name];
foreach ($pathCookies as $cookiePath => $namedCookies) {
if (0 !== strpos($path, $cookiePath)) {
continue;
}
if (isset($namedCookies[$name])) {
return $namedCookies[$name];
}
}
}
}

View File

@ -237,6 +237,8 @@ class CookieJarTest extends TestCase
$this->assertEquals($cookie1, $cookieJar->get('foo', '/test', 'example.com'));
$this->assertEquals($cookie2, $cookieJar->get('foo1', '/', 'example.com'));
$this->assertEquals($cookie2, $cookieJar->get('foo1', '/bar', 'example.com'));
$this->assertEquals($cookie2, $cookieJar->get('foo1', '/bar'));
}
public function testCookieWithWildcardDomain()