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

View File

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