Skip to content

Commit b8cf294

Browse files
alexandre-dauboisnicolas-grekas
authored andcommitted
[Cache][DependencyInjection][Lock][Mailer][Messenger][Notifier][Translation] Url decode username and passwords from parse_url() results
1 parent 8ba6a2c commit b8cf294

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

Transport/Connection.php

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -177,24 +177,24 @@ public function __construct(array $connectionOptions, array $exchangeOptions, ar
177177
*/
178178
public static function fromDsn(string $dsn, array $options = [], AmqpFactory $amqpFactory = null): self
179179
{
180-
if (false === $parsedUrl = parse_url($dsn)) {
180+
if (false === $params = parse_url($dsn)) {
181181
// this is a valid URI that parse_url cannot handle when you want to pass all parameters as options
182182
if (!\in_array($dsn, ['amqp://', 'amqps://'])) {
183183
throw new InvalidArgumentException('The given AMQP DSN is invalid.');
184184
}
185185

186-
$parsedUrl = [];
186+
$params = [];
187187
}
188188

189189
$useAmqps = 0 === strpos($dsn, 'amqps://');
190-
$pathParts = isset($parsedUrl['path']) ? explode('/', trim($parsedUrl['path'], '/')) : [];
190+
$pathParts = isset($params['path']) ? explode('/', trim($params['path'], '/')) : [];
191191
$exchangeName = $pathParts[1] ?? 'messages';
192-
parse_str($parsedUrl['query'] ?? '', $parsedQuery);
192+
parse_str($params['query'] ?? '', $parsedQuery);
193193
$port = $useAmqps ? 5671 : 5672;
194194

195195
$amqpOptions = array_replace_recursive([
196-
'host' => $parsedUrl['host'] ?? 'localhost',
197-
'port' => $parsedUrl['port'] ?? $port,
196+
'host' => $params['host'] ?? 'localhost',
197+
'port' => $params['port'] ?? $port,
198198
'vhost' => isset($pathParts[0]) ? urldecode($pathParts[0]) : '/',
199199
'exchange' => [
200200
'name' => $exchangeName,
@@ -203,12 +203,12 @@ public static function fromDsn(string $dsn, array $options = [], AmqpFactory $am
203203

204204
self::validateOptions($amqpOptions);
205205

206-
if (isset($parsedUrl['user'])) {
207-
$amqpOptions['login'] = urldecode($parsedUrl['user']);
206+
if (isset($params['user'])) {
207+
$amqpOptions['login'] = rawurldecode($params['user']);
208208
}
209209

210-
if (isset($parsedUrl['pass'])) {
211-
$amqpOptions['password'] = urldecode($parsedUrl['pass']);
210+
if (isset($params['pass'])) {
211+
$amqpOptions['password'] = rawurldecode($params['pass']);
212212
}
213213

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

0 commit comments

Comments
 (0)