Skip to content

Commit 1e1b6ce

Browse files
committed
Merge branch '6.1' into 6.2
* 6.1: [HttpFoundation] Always return strings from accept headers decode URL-encoded characters in DSN's usernames/passwords [Security/Http] cs fixes
2 parents 0c0ab51 + 34f8b99 commit 1e1b6ce

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

Request.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1600,7 +1600,8 @@ public function getLanguages(): array
16001600

16011601
$languages = AcceptHeader::fromString($this->headers->get('Accept-Language'))->all();
16021602
$this->languages = [];
1603-
foreach ($languages as $lang => $acceptHeaderItem) {
1603+
foreach ($languages as $acceptHeaderItem) {
1604+
$lang = $acceptHeaderItem->getValue();
16041605
if (str_contains($lang, '-')) {
16051606
$codes = explode('-', $lang);
16061607
if ('i' === $codes[0]) {
@@ -1638,7 +1639,7 @@ public function getCharsets(): array
16381639
return $this->charsets;
16391640
}
16401641

1641-
return $this->charsets = array_keys(AcceptHeader::fromString($this->headers->get('Accept-Charset'))->all());
1642+
return $this->charsets = array_map('strval', array_keys(AcceptHeader::fromString($this->headers->get('Accept-Charset'))->all()));
16421643
}
16431644

16441645
/**
@@ -1652,7 +1653,7 @@ public function getEncodings(): array
16521653
return $this->encodings;
16531654
}
16541655

1655-
return $this->encodings = array_keys(AcceptHeader::fromString($this->headers->get('Accept-Encoding'))->all());
1656+
return $this->encodings = array_map('strval', array_keys(AcceptHeader::fromString($this->headers->get('Accept-Encoding'))->all()));
16561657
}
16571658

16581659
/**
@@ -1666,7 +1667,7 @@ public function getAcceptableContentTypes(): array
16661667
return $this->acceptableContentTypes;
16671668
}
16681669

1669-
return $this->acceptableContentTypes = array_keys(AcceptHeader::fromString($this->headers->get('Accept'))->all());
1670+
return $this->acceptableContentTypes = array_map('strval', array_keys(AcceptHeader::fromString($this->headers->get('Accept'))->all()));
16701671
}
16711672

16721673
/**

Tests/RequestTest.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1629,6 +1629,20 @@ public function testGetLanguages()
16291629
$this->assertEquals(['zh', 'cherokee'], $request->getLanguages());
16301630
}
16311631

1632+
public function testGetAcceptHeadersReturnString()
1633+
{
1634+
$request = new Request();
1635+
$request->headers->set('Accept', '123');
1636+
$request->headers->set('Accept-Charset', '123');
1637+
$request->headers->set('Accept-Encoding', '123');
1638+
$request->headers->set('Accept-Language', '123');
1639+
1640+
$this->assertSame(['123'], $request->getAcceptableContentTypes());
1641+
$this->assertSame(['123'], $request->getCharsets());
1642+
$this->assertSame(['123'], $request->getEncodings());
1643+
$this->assertSame(['123'], $request->getLanguages());
1644+
}
1645+
16321646
public function testGetRequestFormat()
16331647
{
16341648
$request = new Request();

0 commit comments

Comments
 (0)