8000 Merge branch '4.4' into 5.4 · symfony/symfony@308edb5 · GitHub
[go: up one dir, main page]

Skip to content

Commit 308edb5

Browse files
committed
Merge branch '4.4' into 5.4
* 4.4: [HttpFoundation] Always return strings from accept headers decode URL-encoded characters in DSN's usernames/passwords
2 parents 821d176 + 7a3991d commit 308edb5

File tree

4 files changed

+23
-8
lines changed

4 files changed

+23
-8
lines changed

src/Symfony/Component/HttpFoundation/Request.php

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

16901690
$languages = AcceptHeader::fromString($this->headers->get('Accept-Language'))->all();
16911691
$this->languages = [];
1692-
foreach ($languages as $lang => $acceptHeaderItem) {
1692+
foreach ($languages as $acceptHeaderItem) {
1693+
$lang = $acceptHeaderItem->getValue();
16931694
if (str_contains($lang, '-')) {
16941695
$codes = explode('-', $lang);
16951696
if ('i' === $codes[0]) {
@@ -1727,7 +1728,7 @@ public function getCharsets()
17271728
return $this->charsets;
17281729
}
17291730

1730-
return $this->charsets = array_keys(AcceptHeader::fromString($this->headers->get('Accept-Charset'))->all());
1731+
return $this->charsets = array_map('strval', array_keys(AcceptHeader::fromString($this->headers->get('Accept-Charset'))->all()));
17311732
}
17321733

17331734
/**
@@ -1741,7 +1742,7 @@ public function getEncodings()
17411742
return $this->encodings;
17421743
}
17431744

1744-
return $this->encodings = array_keys(AcceptHeader::fromString($this->headers->get('Accept-Encoding'))->all());
1745+
return $this->encodings = array_map('strval', array_keys(AcceptHeader::fromString($this->headers->get('Accept-Encoding'))->all()));
17451746
}
17461747

17471748
/**
@@ -1755,7 +1756,7 @@ public function getAcceptableContentTypes()
17551756
return $this->acceptableContentTypes;
17561757
}
17571758

1758-
return $this->acceptableContentTypes = array_keys(AcceptHeader::fromString($this->headers->get('Accept'))->all());
1759+
return $this->acceptableContentTypes = array_map('strval', array_keys(AcceptHeader::fromString($this->headers->get('Accept'))->all()));
17591760
}
17601761

17611762
/**

src/Symfony/Component/HttpFoundation/Tests/RequestTest.php

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

1613+
public function testGetAcceptHeadersReturnString()
1614+
{
1615+
$request = new Request();
1616+
$request->headers->set('Accept', '123');
1617+
$request->headers->set('Accept-Charset', '123');
1618+
$request->headers->set('Accept-Encoding', '123');
1619+
$request->headers->set('Accept-Language', '123');
1620+
1621+
$this->assertSame(['123'], $request->getAcceptableContentTypes());
1622+
$this->assertSame(['123'], $request->getCharsets());
1623+
$this->assertSame(['123'], $request->getEncodings());
1624+
$this->assertSame(['123'], $request->getLanguages());
1625+
}
1626+
16131627
public function testGetRequestFormat()
16141628
{
16151629
$request = new Request();

src/Symfony/Component/Messenger/Bridge/Amqp/Transport/Connection.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -195,11 +195,11 @@ public static function fromDsn(string $dsn, array $options = [], AmqpFactory $am
195195
self::validateOptions($amqpOptions);
196196

197197
if (isset($parsedUrl['user'])) {
198-
$amqpOptions['login'] = $parsedUrl['user'];
198+
$amqpOptions['login'] = urldecode($parsedUrl['user']);
199199
}
200200

201201
if (isset($parsedUrl['pass'])) {
202-
$amqpOptions['password'] = $parsedUrl['pass'];
202+
$amqpOptions['password'] = urldecode($parsedUrl['pass']);
203203
}
204204

205205
if (!isset($amqpOptions['queues'])) {

src/Symfony/Component/Messenger/Bridge/Redis/Transport/Connection.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -238,8 +238,8 @@ public static function fromDsn(string $dsn, array $redisOptions = [], $redis = n
238238
];
239239

240240
if (isset($parsedUrl['host'])) {
241-
$pass = '' !== ($parsedUrl['pass'] ?? '') ? $parsedUrl['pass'] : null;
242-
$user = '' !== ($parsedUrl['user'] ?? '') ? $parsedUrl['user'] : null;
241+
$pass = '' !== ($parsedUrl['pass'] ?? '') ? urldecode($parsedUrl['pass']) : null;
242+
$user = '' !== ($parsedUrl['user'] ?? '') ? urldecode($parsedUrl['user']) : null;
243243
$connectionCredentials = [
244244
'host' => $parsedUrl['host'] ?? '127.0.0.1',
245245
'port' => $parsedUrl['port'] ?? 6379,

0 commit comments

Comments
 (0)
0