From 657c04a04188a5f0beebbca2bad0ddd8bf70ff5a Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sun, 26 Jan 2025 12:31:08 -0500 Subject: [PATCH] Ward against invalid URLs in Model\Post\Media::isFederatedServer - Add logger call for exception case - Address https://github.com/friendica/friendica/issues/14646#issuecomment-2614231345 --- src/Model/Post/Media.php | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/Model/Post/Media.php b/src/Model/Post/Media.php index 3cf0ce0e7d..ed36d219c3 100644 --- a/src/Model/Post/Media.php +++ b/src/Model/Post/Media.php @@ -10,6 +10,7 @@ namespace Friendica\Model\Post; use Friendica\Content\PageInfo; use Friendica\Content\Text\BBCode; use Friendica\Core\Protocol; +use Friendica\Core\System; use Friendica\Database\Database; use Friendica\Database\DBA; use Friendica\DI; @@ -255,16 +256,21 @@ class Media private static function isFederatedServer(string $url): bool { - $baseurl = Network::getBaseUrl(new Uri($url)); - if (empty($baseurl)) { + try { + $baseurl = Network::getBaseUrl(new Uri($url)); + if (empty($baseurl)) { + return false; + } + + if (Strings::compareLink($baseurl, ATProtocol::WEB)) { + return true; + } + + return DBA::exists('gserver', ['nurl' => Strings::normaliseLink($baseurl), 'network' => Protocol::FEDERATED]); + } catch(\Throwable $e) { + DI::logger()->notice('Invalid URL provided', ['url' => $url, 'exception' => $e, 'callstack' => System::callstack(10)]); return false; } - - if (Strings::compareLink($baseurl, ATProtocol::WEB)) { - return true; - } - - return DBA::exists('gserver', ['nurl' => Strings::normaliseLink($baseurl), 'network' => Protocol::FEDERATED]); } private static function addPreviewData(array $media): array