Skip to content

Commit 9bec424

Browse files
committed
Handle missing components returned by parse_url()
Found by `phpstan analyze --level 7`
1 parent 6b74a9c commit 9bec424

2 files changed

Lines changed: 8 additions & 4 deletions

File tree

‎pinc/RandomRule.inc‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,11 @@ class RandomRule
269269
return '<a href="' . $url . $match[1] . '"';
270270
} elseif (str_starts_with($match[1], '/')) {
271271
$url_parts = parse_url($url);
272-
return '<a href="' . $url_parts["scheme"] . "://" . $url_parts["host"] . $match[1] . '"';
272+
if (($scheme = $url_parts["scheme"] ?? "")) {
273+
$scheme .= "://";
274+
}
275+
$host = $url_parts["host"] ?? "";
276+
return '<a href="' . $scheme . $host . $match[1] . '"';
273277
} elseif (!str_starts_with($match[1], 'http')) {
274278
$base_url = dirname($url) . '/';
275279
return '<a href="' . $base_url . $match[1] . '"';

‎pinc/metarefresh.inc‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@ function metarefresh(int $seconds, string $url, string $title = "", string $body
4141
$absolute_url_parts = parse_url($absolute_url);
4242
$code_url_parts = parse_url($code_url);
4343
if (!$allow_external && !(
44-
($absolute_url_parts["scheme"] == $code_url_parts["scheme"]) &&
45-
($absolute_url_parts["host"] == $code_url_parts["host"]) &&
46-
(($absolute_url_parts["port"] ?? "") == ($code_url_parts["port"] ?? ""))
44+
($absolute_url_parts["scheme"] ?? null) == ($code_url_parts["scheme"] ?? null) &&
45+
($absolute_url_parts["host"] ?? null) == ($code_url_parts["host"] ?? null) &&
46+
($absolute_url_parts["port"] ?? null) == ($code_url_parts["port"] ?? null)
4747
)) {
4848
$absolute_url = "$code_url/index.php";
4949
}

0 commit comments

Comments
 (0)